Tar*_*riq 10 iphone block objective-c weak automatic-ref-counting
在NSMutableArray中添加对象的正确方法是什么,该对象由属性强烈定义.
[tapBlockView setTapBlock:^(UIImage* image) {
[self.myImageArray addObject:image]; // self retain cycle
}
Run Code Online (Sandbox Code Playgroud)
如果我将创建弱引用之类的东西
__weak NSMutableArray *array = self.myImageArray;
[tapBlockView setTapBlock:^(UIImage* image) {
[array addObject:image]; // If I will do this then how will I update original Array ?
}
Run Code Online (Sandbox Code Playgroud)
我也试过了
__weak id weakSelf = self;
[tapBlockView setTapBlock:^(UIImage* image) {
[weakSelf storeImageInaNewMethod:image]; // Calling SToreImageInaNewMethod
}
Run Code Online (Sandbox Code Playgroud)
和
-(void)storeImageInaNewMethod:(UIImage*)image {
[self.myImageArray addObject:image]; // This again retaining cycle
}
Run Code Online (Sandbox Code Playgroud)
更新属性定义的原始对象的正确方法是什么?
Kaa*_*glu 14
在maddy的回答之后 - 这是来自2012年WWDC关于GCD和异步编程的讲座:
__weak MyClass *weakSelf = self;
[tapBlockView setTapBlock:^(UIImage* image) {
__strong MyClass *strongSelf = weakSelf;
if(strongSelf) {
[strongSelf.myImageArray addObject:image];
}
}];
Run Code Online (Sandbox Code Playgroud)
尝试第2和第3组合.
__weak id weakSelf = self;
[tapBlockView setTapBlock:^(UIImage* image) {
[weakSelf.myImageArray addObject:image];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3379 次 |
最近记录: |