小编jol*_*uly的帖子

将文本分配给UILabel时内存泄漏(iOS,Swift 4,Xcode 9)

我一直在开发没有情节提要的新应用。一切正常,直到我使用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:]中出现内存泄漏。

在此处输入图片说明

我试图将标签设置为弱,但是当我尝试将其添加为子视图时,它变为零。

因此,我的问题是:

  • 现在和将来如何消除这种内存泄漏?
  • 因此,我应该仅在.xib / .storyboard文件中创建UI元素吗?

我是iOS开发的新手,所以我认为我缺少明显的东西。我将不胜感激任何帮助或建议。

编辑:根据@ Sh-Khan@ J.Doe的 …

memory-leaks uilabel ios swift

6
推荐指数
1
解决办法
573
查看次数

有没有办法避免手动运行`pod install`而不是同时提交Pods目录?

在我当前的项目中,我被要求不要提交我的Pods目录,同时,人们希望我向 XCode 构建阶段“添加一些脚本”,如果需要,它将在每次安装之前自动运行“pod install”。

目标不是pod install在克隆存储库后在终端中手动运行。

我花了一天时间试图解决这个问题,我发现了一些没有太多细节的参考资料:

iOS 使用 pod install 作为 Pre-action 运行脚本来构建项目

CocoaPods 版本控制,克隆 repo 时必须使用 pod install

我还发现对于 CI,通过在 .yml 文件中设置操作可以解决同样的问题:

Travis-CI 无法打开文件

你知道这种脚本会是什么样子吗?

xcode build-process git-clone run-script cocoapods

4
推荐指数
1
解决办法
1510
查看次数