मैं ऑब्जेक्टिव-सी में ब्लॉक उपयोग के बारे में थोड़ा उलझन में हूं। मैं वर्तमान में ARC का उपयोग करता हूं और मेरे ऐप में मेरे पास बहुत सारे ब्लॉक हैं, वर्तमान self
में इसके कमजोर संदर्भ के बजाय हमेशा संदर्भित करता है। हो सकता है कि इन ब्लॉकों को बनाए रखने self
और निस्तारण से रखने का कारण हो ? सवाल यह है कि क्या मुझे हमेशा एक ब्लॉक में एक weak
संदर्भ का उपयोग करना चाहिए self
?
-(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];
}
ProcessOperation.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);
}
}