我在 viewControllers 之间使用 Blocks 而不是委托进行回调,但我无法弄清楚为什么这种情况不起作用:
所以我有一个调用detailViewController的mainViewController,当返回作为mainViewController属性的tableView时需要重新加载。
DetailViewController *actionDetail = [[DetailViewController alloc]initWithSaveBlock:^{
[self.tableView reloadData] //app crashes here
}];
当用户点击“保存按钮”时,在 detailViewController 中调用“保存”
- (void)save
{
if (self.saveBlock)
self.saveBlock();
[self dismissModalViewControllerAnimated:YES];
}
出于某种原因,[self.tableView reloadData]
不符合[self dismissModalViewControllerAnimated:YES]
. 如果我删除这两个应用程序之一,应用程序似乎工作正常,显然比我错过了预期的行为。
当应用程序崩溃时,控制台中的消息是:
Previous frame inner to this frame (gdb could not unwind past this frame)
任何人都知道为什么这不起作用?
更新: SaveBlock 是这样定义的
typedef void (^SaveBlock)();
@interface DetailViewController : UIViewController
{
}
@property(nonatomic,assign)SaveBlock saveBlock;