我的客户有一个基于Obj-C的旧iOS项目,并希望我对其进行更新。

问题是,在我的计算机上,该项目没有警告。但是在他的计算机上,Xcode显示了130多个Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior警告。

我想无预警地推送该项目,但无法在Mac上查看/显示/重新创建它们。

有什么建议么?谢谢。

笔记:


开发目标是iOS 11.3。
我们正在使用相同和最新版本的macOS和Xcode。
我的客户使用的是MacBook Pro,我认为它是2013或2014版本。
我正在使用2013年末的MacPro。
该项目将CocoaPods与以下Pod结合使用:


pod“ Firebase / Core”
pod“ Firebase / AdMob”
吊舱“ JGProgressHUD”

最佳答案

Xcode 9.3(9E145)会将CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF设置为YES,这是其“更新项目设置”步骤的一部分。

另外,Cocoapod依赖于一个名为Xcodeproj的gem,并且从1.5.5版开始(我认为),Xcodeproj还将默认为每个pod目标将此标志设置为YES。 (请注意,您可以将相同版本的Cocoapods与不同版本的Xcodeproj配合使用,并在运行pod install / update时获得不同的结果)。

您可以通过为每个构建目标手动将此标志设置为YES来强制显示这些错误(在“构建设置”中执行此操作,搜索“隐式保留”-该条目标记为“块中“自我”的隐式保留”并映射)到Clang标志CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF)。

如果您使用的是相同版本的Xcode,我怀疑您有不同版本的Cocoapods(或Xcodeproj)。请注意,这些警告可能来自容器,而不是您的代码。

关于ios - Xcode在显示“块隐式保留'自我'”时表现异常。明确提及“自我”以表明这是预期的行为”警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49688281/

10-09 08:05