ope*_*rog 2 memory-management objective-c objective-c-blocks
本教程建议您可以这样做:
dispatch_async(queue, ^{
if (_valid) {
[self processFile:fileURL];
}
});
Run Code Online (Sandbox Code Playgroud)
但我持怀疑态度.Blocks复制变量的值(捕获范围).所以_valid将是YES或NO,具体取决于我创建此块时的内容.该块将使用此捕获的值,而不是查找实例变量的实际值.正确?
该块将使用此捕获的值,而不是查找实例变量的实际值.正确?
在实例变量的情况下,self捕获并将实例变量计算为self->_valid,即块运行时的值.
这就是为什么你在这种情况下得到ARC的警告,关于隐式捕获self可能导致参考周期.
这也是您应该始终使用属性的另一个原因,而不是直接使用实例变量.它使得清晰明确地self被捕获,而不是财产.
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |