2011-05-27 102 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]; 
}