2011-05-27 101 views
5
+ (void)Foo; 
- (void)Foo; 

在方法- (void)Foo中,關鍵字self表示該類的一個實例。 但是在方法中,+ (void)Foo,關鍵字self是什麼意思?這是否意味着Class關於`self`的關鍵字

回答

7

self是每個方法的兩個隱式參數之一。它是一個指向對象的指針,最初它是接收消息的任何對象來調用正在執行的方法。當所討論的方法是一個實例方法時,self將成爲定義方法的類的一個實例,或者它的一個子類。在類方法的情況下,self將是類對象。

+5

這也正是爲什麼Objective-C的類方法可以被子類化,而Java的不能...... – bbum 2011-05-27 07:25:39

5

是的。下面的工作很好:

+(id)myObjectWithInt:(NSInteger)anInt { 
    return [[[self alloc] initWithInt:anInt] autorelease]; 
}