2012-09-21 70 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 class]與[NSObject self] ) –

+2

@WolfgangSchreurs:沒有。 – Jesper

回答

10

-self是一種方法defined in the NSObjectprotocol。它返回接收者,也就是你發送消息self到的對象。如果你這樣做[a self],你a回來了,是的,如果你做[self self](或self.self),你確實得到self回來。

,你都應該追加一個新的組件,但是打算觀察整個對象,像可可綁定這可能是在鍵值路徑非常有用。我沒有在您發佈的代碼中看到任何這樣的應用,但代理可能採用不同的方式採用self來指向代理本身,而不是遠程/轉發對象。

8

它與self一樣,只是一個多餘的呼叫。

[self self] // ---> Same object of self 
相關問題