2

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

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

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

我被告知self在实例方法中指的是实例本身。那么self在类方法中是什么意思呢?

4

1 回答 1

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]来创建执行调用的类的新实例。

于 2012-10-14T03:05:56.030 回答