2011-08-18 99 views
0

我的子類NSOperation來實現我的操作。讓我們稱之爲MyOperation。爲什麼我的NSOperation對象不能接收異步回調?

在MyOperation的實現中,我重寫了主函數,並在其中創建了一些異步網絡東西,並將委託設置爲self(操作對象)。但操作對象從未獲取這些委託回調,爲什麼?在收到回調之前,我沒有完成設置。

還是NSOperation不能做到這一點?

我發現如果我手動「啓動」操作,它將工作。但是,如果我將它添加到操作隊列中,操作將被執行,但無法獲得這些回調。

回答

0

如果你在這樣的主要方法設置你的回調:

-(void)main{ 
    // setup 
    object.delegate = self 
} 

那麼你的主要方法將繼續執行,完整,走委託有機會完成回調之前。您需要重寫NSOperation中的start方法並手動處理isFinished和isExecuting屬性,或者您需要找出一種方法,讓委託方法在不會消失的對象上調用。

請參閱NSOperation class reference瞭解有關覆蓋正確方法和KVC通知以使其正常工作的完整詳細信息。

相關問題