我一直在开发没有情节提要的新应用。一切正常,直到我使用Instruments测试我的应用程序:每次将字符串分配给标签时,该应用程序都会泄漏。当我使用情节提要时,我没有那样的漏洞。
我已阅读以下资源以找到答案:
最受欢迎的观点是这是一个Instruments错误,但对我来说似乎太明显了。
泄漏在空的应用程序中重现。在根视图控制器中:
class ViewController: UIViewController {
var label: UILabel?
override func viewDidLoad() {
super.viewDidLoad()
label = UILabel()
view.addSubview(label!)
var textForLabel: String? = "Hello"
label?.text = textForLabel
//attempt to free the memory
textForLabel = nil
label = nil
//EDIT: added after @J.Doe and @Sh-Khan answers, but it's still leaking
label.removeFromSuperview()
}
}
Run Code Online (Sandbox Code Playgroud)
在真实设备(iPhone SE 11.2)上的Instruments中测试此应用时,我看到以下内容:
单击_NSContiguousString时,我看到[UILabel setText:]中出现内存泄漏。
我试图将标签设置为弱,但是当我尝试将其添加为子视图时,它变为零。
因此,我的问题是:
我是iOS开发的新手,所以我认为我缺少明显的东西。我将不胜感激任何帮助或建议。
编辑:根据@ Sh-Khan和@ J.Doe的 …
在我当前的项目中,我被要求不要提交我的Pods目录,同时,人们希望我向 XCode 构建阶段“添加一些脚本”,如果需要,它将在每次安装之前自动运行“pod install”。
目标不是pod install在克隆存储库后在终端中手动运行。
我花了一天时间试图解决这个问题,我发现了一些没有太多细节的参考资料:
iOS 使用 pod install 作为 Pre-action 运行脚本来构建项目
CocoaPods 版本控制,克隆 repo 时必须使用 pod install
我还发现对于 CI,通过在 .yml 文件中设置操作可以解决同样的问题:
你知道这种脚本会是什么样子吗?