iphone - 有什么方法可以检查实例是否仍在内存中?

标签 iphone objective-c memory-management objective-c-runtime

示例:我有一个 View Controller 并摆脱它。但仍然有一个变量保存它的内存地址。访问该结果会导致 EXEC_BAD_ACCESS。当然。但是:有什么方法可以检查该变量是否仍然有效?即它是否仍然指向内存中存在的东西?

最佳答案

您需要再读一遍:

Cocoa Memory Management Guidelines

简而言之,如果您想让某些东西留在身边,您必须保留它。

如果您希望某些内容消失并且您之前已保留它,则必须释放自动释放它。

绝不能直接调用dealloc(除了[super dealloc];,在每个dealloc<的末尾 方法)。

绝不能释放自动释放您未保留的对象。

请注意,某些方法确实返回必须释放的保留对象。如果您分配一个类的实例,则意味着保留。如果您复制并实例,则会保留副本。

如果您曾经想使用 retainCount 方法,请不要这样做。这没有用。仅将保留计数视为增量;如果加,则必须减,但绝对值是应该忽略的实现细节。

(换句话说,即使有办法明确检查对象的有效性——没有——这也将是错误的答案。)

哦,还有使用 Xcode 中的构建和分析功能。它在识别内存管理问题等方面做得非常好(但不是很完美)。

关于iphone - 有什么方法可以检查实例是否仍在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2336527/

相关文章:

ios - 如何在导航 Controller 内的 Storyboard 中从appdelegate推送viewcontroller

iphone - 加载了 "PersonnalDetails" Nib 但没有获得 UITableView

ios - 应用程序崩溃并显示消息 "Usage: leveldbutil command..."

ios - 我想从 NSData 加载图像但滚动不流畅

iphone - 如何释放 iPhone 中已声明对象的内存

ios - 使用 QuincyKit 发送低内存崩溃报告?

c++ - 模板类的自动内存池功能

iphone - 单击 "back"按钮时 UINavigationController 应用程序崩溃

ios - 如何使用 NSUnderlineStyle.PatternDot

ios - 首先按特定 NSString 对 NSArray 进行排序,然后按字母顺序排序