2012-09-21 8 views
8

私はちょうどhttps://github.com/MugunthKumar/MKNetworkKitのいくつかのソースコードを読んで、この客観的なcの中で[self self]は何を意味しますか?

+(void) initialize { 

    if(!_sharedNetworkQueue) { 
    static dispatch_once_t oncePredicate; 
    dispatch_once(&oncePredicate, ^{ 
     _sharedNetworkQueue = [[NSOperationQueue alloc] init]; 
     [_sharedNetworkQueue addObserver:[self self] forKeyPath:@"operationCount" options:0 context:NULL]; 
     [_sharedNetworkQueue setMaxConcurrentOperationCount:6]; 

    }); 
    }    
} 

[セルフセルフ]ことはここで何を意味しているのを見たのか?

+1

私の最初の推測は、それが自己のメタクラスを指していることです。おそらく誰かがこれが真実かどうかを確認することができますか? ObjCのメタクラスの詳細はこちら:http://cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.htmlまた、以下も読んでください:http://www.sealiesoftware.com /blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html( 'Objective-Cはクラスメソッドのような実用的な目的のためにメタクラスを使用しますが、そうでなければメタクラスを隠す傾向があります。例えば、[NSObjectクラス]は[NSObject self]' ) –

+2

@WolfgangSchreurs:いいえ。 – Jesper

答えて

10

-self方法defined in the NSObjectprotocolです。受信者、つまりメッセージを送信するオブジェクトselfを返します。 [a self]を実行すると、aが返されます。[self self](またはself.self)の場合は、実際にはselfが返されます。

これは、新しいコンポーネントを追加する予定のキー値パスでは役に立ちますが、オブジェクト全体(Cocoaバインディングなど)を監視するために役立ちます。あなたが投稿したコードにはこれのアプリケーションが表示されませんが、プロキシがリモート/転送オブジェクトではなくプロキシ自体を指すように、selfを別様に採用する場合があります。

8

selfと同じですが、冗長な呼び出しのみです。

[self self] // ---> Same object of self 
関連する問題