【发布时间】:2011-02-09 08:54:13
【问题描述】:
有时我需要确定一个对象是否真的会被释放。我当然可以使用 Instruments,但这需要很长时间,而且我必须搜索数百万个对象,所以我曾经这样做:
-(void)release {
NSLog(@"I'm released");
[super release];
}
但问题是:这样做安全吗?当我覆盖-(void)release 时,我会遇到任何问题吗?还有,真的是void吗?如果我构建我的应用程序以进行分发,但每次意外都将它留在那里怎么办?还是只是安全?谢谢
【问题讨论】:
-
“真正发布”是什么意思?你认为有时 [foo release] 不会导致释放消息被发送吗?
-
@JeremyP
[[[foo alloc] init] autorelease];?? -
我明白了。您不想查看 release 方法是否有效,而是要查看对象是否被释放。它可能会在其生命周期内多次保留和发布,因此调试发布方法可能没那么有用。您可能想在下面查看 Laurent Etiemble 的答案。
标签: objective-c cocoa-touch debugging memory-leaks release