使用objective-C块来编写完成处理程序

时间:2015-05-29 00:23:41

标签: ios objective-c block completion

我已经看过很多关于积木的不同答案,我仍然在努力弄清楚如何使用它。

这是我到目前为止所拥有的......

@interface myController ()
   typedef void (^CompletionBlock)();
@end

然后我宣布了一个这样的方法:

-(void)reloadDataWithCompletions:(CompletionBlock)completionBlock{
    [self.tableView reloadData];
    completionBlock();
}

我不知道该怎么做才能在completionBlock中编写代码。我是否写了另一个名为completionBlock的方法?喜欢这个

-(void) completionBlock{
    // do something here once the first method is finished?
 }

1 个答案:

答案 0 :(得分:2)

您需要调用传递要执行的块的reloadDataWithCompletions:方法。像这样:

[self reloadDataWithCompletions:^{
    // The code you want executed in the block
}];

BTW - 在这种情况下不需要块。只有在处理在其他线程上进行的异步调用时才需要完成块。由于您的reloadDataWithCompletions:方法仅在表视图上调用reloadData,并且由于该方法是同步的,因此使用块是没有意义的。

在这种情况下你会得到相同的结果:

-(void)reloadData {
    [self.tableView reloadData];
}

并将其称为:

[self reloadData];
// code you want executed after the reload is done