2010-12-08 89 views
0

为什么当使用Instrument-Leaks工具执行以下代码(故意泄漏)时,它是否显示NSObject存在泄漏,而不是NSDate?如我所期望的,它们在使用Analyze静态分析工具运行时都会显示出来。仪器泄漏工具中没有显示简单泄漏

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 

    NSObject* obj = [NSObject alloc]; 
    obj = [NSObject alloc]; 

    NSDate* date = [NSDate alloc]; 
    date = [NSDate alloc]; 

    sleep(10); // time to allow leaks to pick up sample 
    return 0; 
} 
+0

是的,我以前经历过同样的事情。我也试图故意泄漏东西,仪器没有检测到它们。我认为乐器不会像你期望的那样彻底。 – Altealice 2010-12-08 12:34:54

+0

我建议你看看WWDC 2010视频。会议311涵盖了这个主题相当不错。 – JustSid 2010-12-08 20:55:56

回答

2

这只是一个假设:NSDate的可以实现的性能,这使得它的-alloc方法返回一个缓存值一些非常硬的黑客。