我使用過幾種不同的語言,例如Java,C#和Objective-C。在大多數語言中,不需要對象實例的方法稱為靜態方法。但是,涉及到Objective-C時,有些人在調用靜態方法時會感到防御,他們希望您將其稱為類方法。為什么將它們稱為類方法而不是靜態方法?靜態方法和類方法有什么區別?
3 回答
瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
盡管實際上大多數時候類方法和靜態方法是相同的,但是它們是不同的。使用靜態方法,該類充當名稱空間限定符。對于類方法,類本身是一個對象,因此類方法對于類對象而言與實例方法對實例的作用完全相同。因此,您可以執行以下操作
@interface TestClass : NSObject
+ (void)classOrInstanceMethod;
- (void)classOrInstanceMethod;
@end
...
NSArray * arr = [NSArray arrayWithObjects:
[[[TestClass alloc] init] autorelease],
[TestClass class],
nil];
for( id obj in arr )
[obj classOrInstanceMethod];
調用哪個版本的classOrInstanceMethod取決于obj是類對象還是and實例。如果您熟悉工廠類模式,則此模式是Objective-C語言的一部分。
- 3 回答
- 0 關注
- 1491 瀏覽
添加回答
舉報
0/150
提交
取消
