有没有办法检查实例是否仍在内存中?

don*_*ile 2 iphone memory-management objective-c objective-c-runtime

示例:我有一个视图控制器并摆脱它.但是仍然有一个变量保存它的内存地址.访问它会导致EXEC_BAD_ACCESS.当然.但是:有没有办法检查该变量是否仍然有效?即如果它仍然指向内存中存在的东西?

bbu*_*bum 18

你需要再次阅读:

可可内存管理指南

简而言之,如果你想要坚持下去就必须 坚持下去retain.

如果你想要一些东西消失而你之前保留了它,你必须releaseautorelease它.

必须永远不要dealloc直接打电话(除了[super dealloc];你的每一个dealloc方法的结尾).

必须永远不要 releaseautorelease你没有的对象retain.

请注意,某些方法确实会返回您必须保留的对象release.如果你alloc是一个类的实例,那意味着一个retain.如果您copy和实例,则保留副本.

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

(换句话说,即使有方法可以明确地检查对象的有效性 - 但事实并非如此 - 这将是错误的答案.)

哦,并使用Xcode中的Build and Analyze功能.除了其他方面,它确定了很好的 - 但不是很完美 - 识别内存管理问题的工作.