
__weak NSBlockOperation *weakOperation = operation;
这是触发此编译器错误:
__weak attribute cannot be specifIEd on automatic variable.
原因是我没有启用ARC(尚未准备好进行切换).所以从另一个StackOverFlow问题,我被建议使用:
__unsafe_unretained NSBlockOperation *weakOperation = operation;
这使得错误消失了,但对于我正在使用它的上下文,它不起作用(如果感兴趣,请参阅此问题:How to cancel NSOperationQueue).
所以我的问题是,在这个实例中我可以用__weak关键字代替什么来摆脱这个警告?当我使用__weak时,一切都能正常工作,但我担心它不会在iOS的未来版本中占据上风.
解决方法 您不应该担心iOS的未来版本,因为__weak是编译器在为您生成代码时解释的内容.查看您的其他帖子向我建议您的目标是尽管在块内引用,但仍要避免保留weakOperation.在您不使用ARC的特定情况下,您可以将__weak替换为__block,以指示在捕获期间不应保留您的变量.
请注意,在ARC和手动保留计数之间,_clock对保留行为的影响是不同的.
总结以上是内存溢出为你收集整理的ios – 在不使用ARC时替换__weak全部内容,希望文章能够帮你解决ios – 在不使用ARC时替换__weak所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)