ios – 在不使用ARC时替换__weak

ios – 在不使用ARC时替换__weak,第1张

概述我有这行代码: __weak NSBlockOperation *weakOperation = operation; 这是触发此编译器错误: __weak attribute cannot be specified on automatic variable. 原因是我没有启用ARC(尚未准备好进行切换).所以从另一个StackOverFlow问题,我被建议使用: __unsafe_unreta 我有这行代码:

__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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1056624.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存