অবজেক্টিভ-সি-তে ব্লক ব্যবহার সম্পর্কে আমি কিছুটা বিভ্রান্ত। আমি বর্তমানে এআরসি ব্যবহার করি এবং আমার অ্যাপটিতে আমার প্রচুর ব্লক রয়েছে, বর্তমানে সবসময় 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);
}
}