gpt4 book ai didi

ios dealloc 与 autoreleasepool

转载 作者:行者123 更新时间:2023-11-29 13:40:52 24 4
gpt4 key购买 nike

我的问题中的术语可能错误,但这是我最好的尝试:

我的 iOS 应用程序的 ARC 启用了 autoreleasepool。因此,我不会根据自己的选择释放内存,但它似乎是在 GC 拾取器上。

我无法让 dealloc 为已从其 super View 中删除的特定 UIView 运行。这正常吗?

最佳答案

ARC 所做的就是确保在适当的时间发送保留和释放消息(当您开始和停止引用一个对象时)。没有 GC——deallocs 与以前完全一样——这是在保留计数变为 0 时完成的。

自动释放池用于调用自动释放而不是释放。这意味着通过将释放调用放入由自动释放池管理的队列中来延迟释放调用——当池耗尽时,队列中的每个对象都会对其调用释放。

所以,如果你依赖于 ARC --

  1. 不要自己调用 retain、release 或 autorelease——如果你尝试无论如何都会得到一个构建错误

  2. 使用(强)属性来保存您需要保留的引用

  3. 如果您最终得到一个循环引用——一个强指针指向一个强指向返回的对象——那么这一切都会分崩离析——ARC 不会释放任何东西。您要么需要将其中一个指针设置为 nil,要么将其中之一设置为弱指针。

在您认为应该调用 dealloc 的地方放置断点并检查对象 retainCount。使用 Leaks 工具找出可能发生的情况。

关于ios dealloc 与 autoreleasepool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9201377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com