成功ブロックと失敗ブロックをパラメーターとして受け取るメソッドを持つシングルトンクラスがあります。これは、非同期で実行され、成功ブロックと失敗ブロックも使用する別のメソッドを呼び出します。私のメソッドの成功ブロックは、非同期メソッドの成功ブロックによって呼び出されます。成功ブロックが戻る前にビューコントローラーの割り当てが解除されない限り、すべてがうまく機能します。その場合、アプリはクラッシュします。
この状況は、deallocメソッドでデリゲートをnilに設定することに類似しているようです。これをブロックでどのように処理する必要がありますか?
私のコードは次のようになります。
- (void)getObjectsWithId:(NSInteger)id success:(void (^)(NSArray *objects))success failure:(void (^)(NSInteger statusCode, NSError *error))failure {
NSString *path = [NSString stringWithFormat:@"/my_objects/%d/objects", id];
[self getPath:path parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSMutableArray *objects = [[NSMutableArray alloc] initWithCapacity:[responseObject count]];
for (NSDictionary *dict in responseObject) {
Object *object = [[Object alloc] initWithDictionary:dict];
[objects addObject:object];
}
success(objects);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(operation.response.statusCode, error);
}];
}