我的客户端有一个旧的基于Obj-C的iOS项目,并希望我更新它。
问题是,在我的计算机上,项目没有警告。但是在他的计算机上,Xcode显示了130多个Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior
警告。
我想推送项目无警告,但无法在我的Mac上看到/显示/重新创建它们。
有什么建议吗?谢谢。
备注:
答案 0 :(得分:2)
Xcode 9.3(9E145)将CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF设置为YES,作为其“更新项目设置”步骤的一部分。
此外,Cocoapod依赖于名为Xcodeproj的gem并从版本1.5.5开始(我认为)默认情况下,Xcodeproj还会为每个pod目标将此标志设置为YES。 (请注意,您可以在不同版本的Xcodeproj中使用相同版本的Cocoapods,并在运行pod install / update时获得不同的结果。)
您可以通过为每个构建目标手动将此标志设置为YES来强制显示这些错误(在构建设置中执行此操作,搜索“隐式保留” - 条目标记为“块内隐藏的'self'”它映射到Clang标志CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF)。
如果你使用相同版本的Xcode,我怀疑你有不同版本的Cocoapods(或Xcodeproj)。请注意,这些警告可能来自pod而不是您的代码。
答案 1 :(得分:1)
非常感谢@staticVoidMan,我不知道为什么以及是谁做到了这一点。我是该项目的第3位开发人员 - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF设置为NO。将其设置为YES会显示警告。
有趣的是我的客户克隆了我的项目,在他的项目中,它被设置为YES。奇。随你。它解决了。