我正在维护良好的GitHub仓库中阅读一些Objective-C代码。 https://github.com/soffes/sskeychain/blob/master/SSKeychain.m
我遇到了一些奇怪的线条(至少对我来说很奇怪)。
+ (NSArray *)allAccounts {
return [self accountsForService:nil error:nil];
}
我被教导 self 在实例方法中引用实例本身。那么 self 在这里是什么意思呢?在类方法中呢?
答案 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]
来创建执行调用的类的新实例。