2013-04-24 107 views
0

如何等待某種方法完成然後繼續工作?另一個方法內部完成方法等待

- (void)loadMoreDataOnBottomOfTableview 
{ 
NSLog(@"LOADING ITEMS ON BOTTOM"); 
[self refreshStream]; 

[self.mainTableView reloadData]; 

... 
} 

所以我需要等待refreshStream方法來完成,然後重新加載tableview中的數據和loadMoreDataOnBottomOfTableview(...)的其餘部分。

+0

你有解決方案嗎? – 2013-04-25 21:02:25

回答

-1

您可以使用performSelectorOnMainThread:withObject:waitUntilDone:如下:

[self performSelectorOnMainThread:@selector(refreshStream) withObject:nil waitUntilDone:YES] 

[self.mainTableView reloadData]; 

不過請注意,這不是一個推薦的設計模式。異步調用應使用回調(您refreshStream方法應該叫回在您的視圖控制器的方法則應該觸發reloadData

0
[self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>]; 

你可以用這個來調用你的方法。

0

我可以在swift中回答你的查詢。同樣,您可以在代碼中使用完成塊來完成任務。

class TestClosure 
{ 

func calculateAdditionData() { 

    countNumbers({ (result) -> Void in 

     println("[self refreshStream] completed") 
     //[self.mainTableView reloadData]; 
    }) 
} 


func refreshStream(completion: (() -> Void)!) { 

    //Your refresh code 
    completion() 
} 

} 

完成塊/閉包是等待某件事完成的正確方法。