我有一个单例 class ,负责处理所有Game Center逻辑:
typedef void (^GameCenterCallbackFinishUpdating)();
- (void)getAllMatches:(GameCenterCallbackFinishUpdating)onComplete
{
[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
{
//Do stuff here...
onComplete();
}];
}
从另一个viewController我使用:
[[GameCenterHelper sharedHelper] getAllMatches:^{
[self.myTableView reloadData];
}];
当我进入应用程序时,它的工作效果很好,但是一旦我关闭了该应用程序(后台),然后再次启动它,就会得到:
onComplete(); ---- Thread 1: EXC_BAD_ACCESS (code=2, address=0xc)
我在这里做错了什么?
最佳答案
一些背景信息:这些块是对象,如果任何块是nil
而您尝试调用它们,则会使应用程序崩溃。
在调用之前,onComplete
块会以某种方式变为nil
。以下if (...)
语句可帮助您防止调用nil
指针,因此应用程序不会崩溃。
if (onComplete) onComplete();