2

手入れの行き届いたGitHubリポジトリでObjective-Cコードを読んでいます。https://github.com/soffes/sskeychain/blob/master/SSKeychain.m

私はいくつかの奇妙な線に出くわしました(少なくとも私の目には奇妙です)。

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

自己はインスタンスメソッドでインスタンス自体を参照することを教えられました。では、クラスメソッドでの自己とはどういう意味ですか?

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 に答える