我有这个方法需要一个块,但并不总是调用那个块。见方法:
- (void)updateWithCompletion:(void (^)(void))completion {
[MYObject myMethodWithCompletion:^(NSArray *array, NSError *error) {
if (error) {
NSLog(@"%s, ERROR not nil", __FUNCTION__);
completion();
return;
}
NSLog(@"%s, calling completion %d", __FUNCTION__, &completion);
completion();
NSLog(@"%s, finished completion", __FUNCTION__);
}];
}
我有更多的 NSLogs 在里面完成。有时,这个程序计数器会直接超过上面代码中对 completion() 的调用。我不明白为什么会这样,因为调用代码总是将文字代码块作为输入传递。
如果您对包含 addressof 运算符的行的输出感到好奇,它总是不同的东西,但绝不是 0 或 nil。
什么会导致完成不被执行?