示例:我有一个 View Controller 并摆脱它。但仍然有一个变量保存它的内存地址。访问该结果会导致 EXEC_BAD_ACCESS。当然。但是:有什么方法可以检查该变量是否仍然有效?即它是否仍然指向内存中存在的东西?
最佳答案
您需要再读一遍:
Cocoa Memory Management Guidelines
简而言之,如果您想让某些东西留在身边,您必须保留
它。
如果您希望某些内容消失并且您之前已保留它,则必须释放
或自动释放
它。
您绝不能直接调用dealloc
(除了[super dealloc];
,在每个dealloc<的末尾
方法)。
您绝不能释放
或自动释放
您未保留
的对象。
请注意,某些方法确实返回必须释放
的保留对象。如果您分配
一个类的实例,则意味着保留
。如果您复制
并实例,则会保留副本。
如果您曾经想使用 retainCount
方法,请不要这样做。这没有用。仅将保留计数视为增量;如果加,则必须减,但绝对值是应该忽略的实现细节。
(换句话说,即使有办法明确检查对象的有效性——没有——这也将是错误的答案。)
哦,还有使用 Xcode 中的构建和分析功能。它在识别内存管理问题等方面做得非常好(但不是很完美)。
关于iphone - 有什么方法可以检查实例是否仍在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2336527/