2013-04-24 55 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() 
} 

} 

完成块/闭包是等待某件事完成的正确方法。