自我中的方法

时间:2012-10-14 03:04:28

标签: iphone objective-c cocoa-touch

我正在维护良好的GitHub仓库中阅读一些Objective-C代码。 https://github.com/soffes/sskeychain/blob/master/SSKeychain.m

我遇到了一些奇怪的线条(至少对我来说很奇怪)。

+ (NSArray *)allAccounts {
    return [self accountsForService:nil error:nil];
}

我被教导 self 在实例方法中引用实例本身。那么 self 在这里是什么意思呢?在类方法中呢?

1 个答案:

答案 0 :(得分:1)

在类内部方法中,self引用表示相应Class

的对象
+ (NSArray *)allAccounts {
    NSLog("%@", [self description]); // Will print the name of the class
    return [self accountsForService:nil error:nil];
}

当您调用[self class]时,这与实例方法中的对象相同。

如果您想以多态方式调用class上的方法,这将非常有用。例如,您可以调用[[self alloc] init]来创建执行调用的类的新实例。