2011-04-06 227 views
0

我想知道和了解這段代碼幫助我瞭解此代碼段

NSOperationQueue *queue = [NSOperationQueue new]; 
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] 
             initWithTarget:self 
             selector:@selector(navigatePage) 
             object:nil]; 
    [queue addOperation:operation]; 
    [operation release]; 
    [queue release]; 


-(void)navigatePage 
//================== 
{ 
    [self performSelectorOnMainThread:@selector(loadPageDetails) withObject:nil waitUntilDone:NO]; 

    [myTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; 
} 

感謝您的時間。

+1

我想查看NSOperationQueue和NSInvocationOperation的API頁面,他們應該告訴你你需要知道什麼。上面的代碼有什麼不明白的地方嗎?哪一點? – occulus 2011-04-06 10:27:26

回答

1

簡而言之,代碼看起來被設計爲在後臺線程中執行一些處理 - 它可能通過網絡獲取一些數據(loadPageDetails),然後它將使用結果更新UI(reloadData) 。 但是,loadPageDetails被調用的主線程,我不明白 - 當然,應該做一個後臺線程,如果它是耗時?

您可以爲您的代碼提供更全面的上下文嗎?在上面的例子中,我並沒有真正看到使用NSInvocationOperation的意思,因爲所有的操作都是在主線程上再加上更多的工作。

使用後臺處理的通常原因是在做某些需要時間完成的事情時不阻塞主線程 - 我假設在主線程上調用了設置操作隊列的代碼位?