【问题标题】:How to disable Block implicitly retains 'self' warning in Xcode 10如何在 Xcode 10 中禁用 Block 隐式保留“自我”警告
【发布时间】:2019-11-29 07:16:42
【问题描述】:

如何在 Xcode 中禁用此警告?我理解警告信息,我只想取消它。

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

【问题讨论】:

  • 不要试图抑制它,而是按照警告状态修复代码。

标签: objective-c xcode


【解决方案1】:

警告是故意的。只是禁用它可能会导致内存泄漏。你可以使用这样的东西:

__weak __typeof(self) weakSelf = self;
dispatch_async(self.queue, ^{
        __typeof(self) strongSelf = weakSelf;
        ...
        [strongSelf someMethod];
});

【讨论】:

    【解决方案2】:

    可以禁止类中的某些代码。

    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wimplicit-retain-self"
    
    .. code ..
    
    #pragma clang diagnostic pop
    

    【讨论】:

      【解决方案3】:

      -Wno-implicit-retain-self 添加到构建设置中的相应条目中。完整列表见Diagnostic flags in Clang

      【讨论】:

      • 谢谢!构建设置中的适当条目是什么?
      • @BerryBlue - IIRC 类似于“附加编译器标志”的内容(我在平板电脑上 - 没有 Xcode)
      • 谢谢!该字段称为“其他警告标志”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      相关资源
      最近更新 更多