1
5
如果保留该属性,则必须释放。当你宣布
此外,iboutlet没有什么神奇之处,它只是界面生成器的一个标记,用于查看您希望在ib中显示哪些属性。它只是一个空宏,cmd单击iboutlet关键字以查看其定义:
同样的事情也适用于iBaction,它扩展到
当我需要调试内存管理时,我通常只是在dealloc方法中设置一个断点或在那里记录一个字符串。记录
这也可能有助于了解
事实并非如此,但这已经足够接近了。现在应该更清楚为什么应该在dealloc中释放。 |
2
5
属性不是“自动处理”的。最接近实际情况的是,合成访问器正确地处理它们的内存管理职责。但那只是那些访问器。属性只是在类上声明可访问“对象”的一种方式。除此之外,他们没有什么特殊待遇。它不会启动某种垃圾收集。所以是的,释放是必要的。 如果你想检查一个正在运行的应用程序是否有漏洞或者内存没有释放,你应该使用仪器之类的调试工具。我不会直接查看ref count,因为它几乎是危险的无用的-不能保证ref count在任何时候都是您所期望的,而且这并不一定表示有问题。 你应该看看苹果的 memory management rules for Cocoa . 一旦你吸收了它就很简单了。我不一定建议您先阅读其他指南,因为细微的错误陈述可能会引导您走上错误的道路(例如,为您发布属性的想法可能来自于听到有人错误地陈述它们的工作方式)。 |
3
3
这取决于如何实现属性。如果它是自动实现的(
您可以检查nsobject retaincount属性。这方面的信息是 here . 为了进行高级调试,存在nszombieenabled环境标志,该标志将导致所有释放消息在访问正常释放的对象时不会减少引用计数,而是记录错误。 |
WkWk · Apple Watch动作通知不起作用 2 年前 |
Otavio Miguel · 在手机中保留我自己未发布的ios应用 2 年前 |
Nico Passaglia · 移动键盘向上移动站点 6 年前 |