【发布时间】:2011-07-02 15:58:24
【问题描述】:
作为一名 Python 程序员已经四年了(虽然这并不意味着什么)并转向 Objective-C,但对我来说一个奇怪且“陌生”的概念是内存管理。幸运的是垃圾收集存在,我只打算为 mac OS 10.6+ 开发应用程序,所以到目前为止,在我所有的项目中,我总是将垃圾收集变成必需的。但这是我的问题:当我使用带有 Alloc 和 Leaks 工具的 Instruments 时,我看到图中出现了泄漏的字节。 ???很奇怪。垃圾收集在需要时真正做什么。我认为你可以完全忘记保留、释放等。但这是真的吗?请提供 GC 有帮助和没有帮助的示例(如果有),以便我了解我做错了什么。
编辑
我可能应该更清楚。我要解决的问题是,即使按要求设置了 GC,Instruments 仍然会发现泄漏。我还问了 GC 是做什么的,这样我才能确保它按照我的想法去做,问题不在于我的代码或 GC,而在于其他地方。那个“其他地方”是我想知道的。
【问题讨论】:
-
你看过官方文档developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/… 吗? 除了官方文档,您还想要哪些信息?
-
好吧,除了澄清 GC 的作用之外,我还想指出一个原因,即使在需要 GC 之后,Instruments 仍然会在我的代码中看到泄漏。
-
哪个对象被泄露了?您是否使用过任何 CoreFoundation 函数,例如
CF...Create...? -
除非您发布代码,否则我们无法回答有关您的代码为何显示泄漏的问题,正如@Yuji 在第一条评论中暗示的那样,这是一个过于宽泛和模糊的问题。请发布另一个问题,询问您的代码并尝试编辑此问题以解决特定问题。
标签: objective-c memory-management memory-leaks garbage-collection