2010-09-09 49 views
1

.h文件中UIImage的內存泄露

UIImage *ownImg; 

@property (nonatomic, retain) UIImage *ownImg; 

.m文件

在viewWillAppear中的方法:

UIImage *myImage2 = [UIImage imageNamed:@"thumbnail.png"]; 

self.ownImg = myImage2; 

也就是說在ownImg泄漏,任何人都知道爲什麼它泄露?

順便說一句,使用self.ownImg和沒有自我有什麼不同。

謝謝。

回答

3

調用

ownImg = myImage2; 

僅僅是隻將指針賦值。但打電話

self.ownImg = myImage; 

將調用@synthesized setter包含保留。 (我假設你擁有@synthesize()for ownImg)。

因爲你使用的是一個setter方法,所以你必須在某個地方釋放它。嘗試將其放在unload方法的覆蓋中,或者如果非nib類將其放入dealloc中。

+0

我做合成ownImg。 In viewDidUnload我寫self.ownImg = nil; 在dealloc [ownImg release]; 也許是因爲我在viewWillAppear中賦值,所以導致內存泄漏? 所以我應該檢查self.ownImg!= nil,然後在再次分配它之前釋放它? 謝謝。 – Water7 2010-09-09 02:22:36

+0

只需使用self.owning = newThing;這將釋放舊的,保留新的,並將指針設置爲新地址。這些綜合的方法隱藏了很多代碼。 – 2010-09-09 22:49:56