Objective-C ブロックを含む再帰を実行しているときに、iOS アプリケーションで 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;
}
}];
}
基本的に、この単純化されたバージョンでは、ProblemMethodはdoSomethingWithFriend:onComplete:を呼び出します。そのメソッドが終了すると ( onComplete )、すべてが問題なければ、元のonComplete1ブロックが呼び出され、これは正常に機能します。
しかし、何か問題が発生した場合は、problemableMethodを再度呼び出す必要があり (再帰部分)、これが初めて発生したときに、すぐに EXC_BAD_ACCESS シグナルを受け取ります。
どんな種類の助けも大歓迎です。