【发布时间】:2013-11-30 14:31:00
【问题描述】:
我对 Objective-C 中的块使用有点困惑。我目前使用 ARC,我的应用程序中有很多块,目前总是引用 self 而不是它的弱引用。这可能是这些块保留self 并防止它被释放的原因吗?问题是,我是否应该始终在块中使用self 的weak 引用?
-(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);
}
}
【问题讨论】:
-
如果你想深入讨论这个话题,请阅读dhoerl.wordpress.com/2013/04/23/…
标签: ios iphone objective-c automatic-ref-counting weak-references