ここでリークが発生したかどうかはわかりませんが、実行セレクターを使用して、割り当てられたNSErrorを呼び出し元のメソッドに戻しても大丈夫ですか?NSMutableArrayを作成し、コールバック用に取得したのと同じオブジェクトに保存しても大丈夫ですか?後でそれを代理人に渡しますか?コードは正常に機能しますが、私はarcを初めて使用するため、何か間違ったことをする恐れがあります。
(セレクターは動的であるため、performセレクターを使用しています。静的に記述した例だけです)。
AFHTTPRequestOperation *operation = [self.client HTTPRequestOperationWithRequest:request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//-----------------Callback--------------------
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
SEL callback = @selector(getOperationCallback:);
NSError *error = [self performSelector:callback withObject:operation];
//------------------Delegate Call---------------
if(operation.delegate)
[operation.delegate onFinish:operation.requestIdentifier error:error
data:operation.parsedObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//------------------Delegate Call---------------
if(operation.delegate)
[operation.delegate onFinish:operation.requestIdentifier error:error data:nil];
}];
- (NSError *)getOperationCallback:(AFHTTPRequestOperation *)operation{
NSArray *rawJson = (NSArray *)operation.jsonObject;
NSError *error;
NSMutableArray *array = [[NSMutableArray alloc] init];
for(id json in rawJson){
MyObject *object = [[MyObject alloc] initWithJson:json];
if(object){
[array addObject:object];
}else{
error = [NSError errorWithDomain:@"myErrors" code:1000 userInfo:nil];
break;
}
}
operation.parsedObject = array;
return error;
}