0

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

这是我到目前为止...

@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?
 }
4

1 回答 1

2

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

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

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

在这种情况下,您将通过执行以下操作获得相同的结果:

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

并称它为:

[self reloadData];
// code you want executed after the reload is done
于 2015-05-29T00:28:41.383 回答