10

CocoaHTTPServerプロジェクトのソースコード、より具体的にはHTTPServer.mファイルを調べていますが、この行がわかりません。

connectionClass = [HTTPConnection self];

これは何をしますか(どこかに文書化されていますか)?どのようにコンパイルするのですか?すべきではない

connectionClass = [HTTPConnection class];
4

4 に答える 4

3

このコンテキストで- (id)selfは、はで定義されたメソッドNSObjectです。受信機を返します。の場合、Classそれは明らかに。への呼び出しと同じことを行う必要があり-(Class)classます。

したがって、クラスオブジェクトは、動的に型付けしたり、メッセージを受信したり、他のクラスからメソッドを継承したりできる本格的なオブジェクトです。それらは、コンパイラーによって作成されるという点でのみ特別です。

于 2012-02-22T14:36:15.160 に答える
3

[Classname self]はオブジェクトと等しく[Classname class]、オブジェクトへの参照を返しclassます。

小さなサンプルコードはこれを示しています:

#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

NSLog(@"Output 1: %@ address:%x",[NSString self], [NSString self]);
NSLog(@"Output 2: %@ address:%x",[NSString class], [NSString class]);

[p release];

}

出力:

2012-02-22 15:36:13.427 Untitled[1218:707] Output 1: NSString address:7b306a08
2012-02-22 15:36:13.428 Untitled[1218:707] Output 2: NSString address:7b306a08
于 2012-02-22T14:39:17.767 に答える
2

[className self];クラスオブジェクトを[className class];
返します。
例えば:

id object = [getSystemEventsAppDelegate self];
id object1 = [getSystemEventsAppDelegate class];  

ここに画像の説明を入力してください

于 2012-02-22T14:47:28.527 に答える
-2

非常に基本的な簡単なself説明では、現在のオブジェクトへの参照です。これを変数として(この場合は)HTTPConnectionに渡し、そのメソッドの結果を変数に割り当てます。

したがって、HTTPConnectionを見ると、そのオブジェクト参照がどのように使用され、何が返されるかがわかります。

于 2012-02-22T14:35:58.470 に答える