在我的iOS应用程序中,当进行涉及Objective-C块的递归时,我收到EXC_BAD_ACCESS信号。以下是简化的代码:
- (void)problematicMethod:(FriendInfo*)friendInfo onComplete:(void(^)(NSString*))onComplete1 {
[self doSomethingWithFriend:friendInfo onComplete:^(Response* response) {
switch (response.status) {
case IS_OK:
onComplete1(message);
break;
case ISNT_OK:
// Recursively calls the method until a different response is received
[self problematicMethod:friendInfo onComplete:onComplete1];
break;
default:
break;
}
}];
}
所以基本上,这个简化版本中的problematicMethod调用doSomethingWithFriend:onComplete:。当该方法完成(onComplete)并且一切正常时,原始的onComplete1块就会被调用,这很好地工作。但是如果出现问题,需要再次调用problematicMethod(递归部分),当第一次发生时,我立即收到EXC_BAD_ACCESS信号。任何形式的帮助将不胜感激。