2010-12-08 104 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方法返回一個緩存值一些非常硬的黑客。