我有一个这样初始化的 View Controller :HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
然后,在我使用完这个 View Controller 后,我放置了这个方法:[homeVC release];
紧随其后我已放置 NSLog@("%d",[homeVC retainCount]);
控制台将 15 显示为 retainCount
数字,但是,我把双 [homeVC release];
行和相同的NSLog
声明,结果 = 应用程序崩溃...
两个问题:
1)有人可以解释吗?
2) 如何制作 retainCount
等于零?
最佳答案
此外,通常不建议手动检查对象的保留计数,特别是因为在这种情况下,实际值与开发人员可能期望的值不匹配。
alloc/init
, retain
, 和 copy
调用release
,并且不必担心保留计数何时恰好达到零(如果您真的想知道何时发生这种情况,请在 dealloc
中设置断点)。您必须编写不会泄漏或过度释放对象的代码,假设 iOS SDK 也会这样做,并相信您的对象会在正确的时间点被释放。或者,切换到 SDK 版本 5 并改用自动垃圾收集。 关于iphone - 在发布消息后保留 View Controller 的计数不等于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8692811/