3

アップルによると... https://developer.apple.com/library/content/samplecode/URLCache/Listings/Classes_URLCacheConnection_m.html

...次のことを行う必要があります。 if ([response isKindOfClass:[NSHTTPURLResponse self]])

するのと同じif ([response isKindOfClass:[NSHTTPURLResponse class]])ですか?

4

2 に答える 2

0

-[NSObject self]とはどちらも+[NSObject class]同じことを行います: 呼び出されたオブジェクトを返します。+selfクラス メソッドを実装するクラスはないため、メタクラスは最終的に から継承されるためself、クラス オブジェクトを呼び出すとメソッドが呼び出されます(つまり、同じ名前のクラス メソッドによってオーバーライドされない限り、のすべてのインスタンス メソッドをクラス オブジェクトで使用できます)。 .-[NSObject self]NSObjectNSObject

Cocoaライブラリの作成者+classが. _呼び出されたオブジェクトの)。[ClassName self][ClassName class]+[NSObject class]-[NSObject class]+[NSObject class]-[NSObject class]

于 2013-01-11T19:18:57.810 に答える
0

わかりました、Martin Rのコメントは正しいです、それは同じです。どのクラスでも、[ClassName self]または[ClassName class]同じ結果を得ることができます。そして、私はそれらの両方をオーバーライドすることができます:

+ (Class)class
{
    return [super class];
}
+ (id)self
{
    return [super self];
}

実際、すべての NSObject インスタンス メソッド (-) は、クラスのクラス メソッド (+) になります。

「自己」の操作に関するプロ:

  • クラスを直接操作しているため、クラスのクラスを要求する必要はありません

「自己」の操作に関する短所:

  • 'id' のように低型です。
于 2013-01-11T18:50:17.067 に答える