Tôi hơi bối rối về việc sử dụng khối trong Objective-C. Tôi hiện đang sử dụng ARC và tôi có khá nhiều khối trong ứng dụng của mình, hiện tại luôn đề cập đến selfthay vì tham chiếu yếu. Có thể đó là nguyên nhân của các khối này giữ lại selfvà giữ cho nó khỏi bị xử lý? Câu hỏi là, tôi có nên luôn luôn sử dụng một weaktài liệu tham khảo selftrong một khối?
-(void)handleNewerData:(NSArray *)arr
{
ProcessOperation *operation =
[[ProcessOperation alloc] initWithDataToProcess:arr
completion:^(NSMutableArray *rows) {
dispatch_async(dispatch_get_main_queue(), ^{
[self updateFeed:arr rows:rows];
});
}];
[dataProcessQueue addOperation:operation];
}
Quá trình xử lý.h
@interface ProcessOperation : NSOperation
{
NSMutableArray *dataArr;
NSMutableArray *rowHeightsArr;
void (^callback)(NSMutableArray *rows);
}
ProcessOperation.m
-(id)initWithDataToProcess:(NSArray *)data completion:(void (^)(NSMutableArray *rows))cb{
if(self =[super init]){
dataArr = [NSMutableArray arrayWithArray:data];
rowHeightsArr = [NSMutableArray new];
callback = cb;
}
return self;
}
- (void)main {
@autoreleasepool {
...
callback(rowHeightsArr);
}
}

