我的客户有一个基于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/