关于`self`的关键字

Aec*_*Liu 5 objective-c

+ (void)Foo;
- (void)Foo;
Run Code Online (Sandbox Code Playgroud)

在该方法中,- (void)Foo关键字self表示类的实例.但在方法中,+ (void)Foo关键字self是什么意思?这是什么意思Class

NSR*_*der 7

self是每个方法的两个隐含参数之一.它是一个指向对象的指针,最初它是接收消息的任何对象来调用正在执行的方法.当所讨论的方法是实例方法时,self将是定义方法的类的实例,或其子类之一.在类方法的情况下,self将是类对象.

  • 这也正是为什么Objective-C的类方法可以被子类化,而Java不能..... (5认同)

Sea*_*ell 5

是.以下工作正常:

+(id)myObjectWithInt:(NSInteger)anInt {
    return [[[self alloc] initWithInt:anInt] autorelease];
}
Run Code Online (Sandbox Code Playgroud)