【问题标题】:Why new Xcode versions gives a warning about using self inside a block为什么新的 Xcode 版本会警告在块内使用 self
【发布时间】:2019-01-14 13:58:36
【问题描述】:

为什么新的 Xcode 版本会在块内使用 self 时发出警告。

警告:

Block 隐式保留'self';明确提及“自我”以表示 这是预期的行为

@interface ViewController : UIViewController {
     NSString *myString;
}

当我们在变量名前加上 self-> 时,警告就会隐藏。

我看了rmaddy的answer中直接调用变量&self->没有区别

【问题讨论】:

  • 查看最后一张截图:stackoverflow.com/a/49028910/1801544 之前的 XCode 版本没有实现,或者默认设置为 NO?
  • 但较旧的 xcode 显示访问属性值的警告。如果在 .m 文件中定义变量,旧的 xcode 不会显示警告。
  • 但是 LLVM 版本是什么?可能是 XCode 新版本中的不同解析/检查。
  • 苹果 LLVM 9.0。是的。正如@knightIdDragon 的回答,它给了我们关于保留的明确警告

标签: xcode compiler-warnings


【解决方案1】:

这实际上是一个很好的警告,所以我可以看到他们翻转旗帜。通常情况下,人们会不小心将自己保留在块中,从而创建保留循环。此警告通知您开发人员可能会发生保留周期。

基本上,如果您看到self,那么您就知道该块正在保留它,如果您没有看到self,那么乍一看您可能会认为您使用的是局部变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 2023-04-08
    • 2014-01-29
    • 1970-01-01
    • 2010-12-31
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多