Ios 不使用ARC时,替换_弱
我有一行代码:Ios 不使用ARC时,替换_弱,ios,cocoa-touch,objective-c-blocks,nsoperationqueue,retain-cycle,Ios,Cocoa Touch,Objective C Blocks,Nsoperationqueue,Retain Cycle,我有一行代码: __weak NSBlockOperation *weakOperation = operation; 这将触发此编译器错误: __weak attribute cannot be specified on automatic variable. 原因是我没有启用ARC(尚未准备好进行切换)。因此,根据另一个StackOverFlow问题,建议我使用: __unsafe_unretained NSBlockOperation *weakOperation = operatio
__weak NSBlockOperation *weakOperation = operation;
这将触发此编译器错误:
__weak attribute cannot be specified on automatic variable.
原因是我没有启用ARC(尚未准备好进行切换)。因此,根据另一个StackOverFlow问题,建议我使用:
__unsafe_unretained NSBlockOperation *weakOperation = operation;
这会使错误消失,但对于我使用它的上下文,它不起作用(如果感兴趣,请参阅此问题:)
所以我的问题是,在本例中,我可以用什么替换
\uu弱
关键字来消除此警告?当我使用\uu-weak
时,一切都正常工作,但我担心它在未来的iOS版本中无法正常运行 您不应该担心iOS的未来版本,因为编译器在为您生成代码时会对其进行解释
查看您的另一篇帖子向我表明,您的目标是避免weakOperation
被保留,尽管引用来自块内。在您不使用ARC的特定情况下,您可以用\uu块
替换\uu弱
,以指示在捕获期间不应保留变量
请注意,\u块
对保留
行为的影响在ARC和手动保留计数之间是不同的