2011-07-13 44 views
0

我有我的iPhone應用程序內的一些非常小的方法的問題。內存泄漏非常小的方法(objective-c/iphone)

的代碼示例(類似於真實代碼):

+ (void) drawSomething: (UIView *) theView anImportantNumber: (NSNumber *) importantNumber { 
    UIImage *tehImage = [[WebviewUtil sharedInstance] goldStarImage]; 

    int iCount = 0; 
    double roundedNumber = round([importantNumber doubleValue]); 
    for (; iCount <= (4 - roundedNumber); iCount++) { 
     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((iCount * 15) + 9, 6, 14, 13)]; 
     [imageView setImage:tehImage]; 
     [imageView setOpaque:YES]; 
     [theView addSubview:imageView]; 
     [imageView release]; 
    } 
} 

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake的儀器報告一個內存泄漏路線。任何人都可以給我一個提示,錯誤是什麼?我想,[imageView release];會做到這一點?!

非常感謝,如果有人能幫助我:))

+0

在模擬器中還是在真實設備中? (模擬器有時會給出錯誤的讀數 - 總是在真實的設備上測試) – deanWombourne

+0

你能添加'[[WebviewUtil sharedInstance] goldStarImage]的代碼嗎? - 泄漏可能在那裏 – deanWombourne

+0

看起來不錯。 –

回答

0

具有u使用imageNamed:方法是什麼?因爲這種方法導致imageView中的內存泄漏:)

+0

請檢查以下內容:http://losingfight.com/blog/2009/09/14/uiimage-imagenamed-is-a-memory-leak- but-only-on-2-x/ –

+0

老故事的朋友.. – Krishnabhadra

0

嘗試保持斷點爲(; iCount < =(4 - roundedNumber); iCount ++) 並看到它,在任何時候4-roundedNumber不會出去的範圍或有一些不尋常的價值,它不應該有...

2

如果您使用儀器來檢測泄漏,考慮到事實泄漏會告訴你泄漏內存分配點,而不是點實際發生泄漏的地方。

你的代碼看起來是對的。將它作爲子視圖添加後,您正確地發佈了imageView。問題可能在於theView或包含它的任何其他對象。因此,您可以在您的代碼中查看該部分(例如,是否正確發佈了theView?)