2010-09-09 4 views
1

.h файлUIImage утечку памяти

UIImage *ownImg; 

@property (nonatomic, retain) UIImage *ownImg; 

.m файл

В методе viewWillAppear:

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

self.ownImg = myImage2; 

То есть утечка в ownImg, кто-нибудь знает, почему он протекает?

BTW, что отличает использование self.ownImg и без него.

Спасибо.

ответ

3

Вызов

ownImg = myImage2; 

это просто задание, которое просто устанавливает указатели. Но по телефону

self.ownImg = myImage; 

будет называться @synthesized setter, который содержит сохранение. (Я предполагаю, что у вас есть @synthesize() для ownImg.)

Поскольку вы используете метод сеттера, который сохраняет вас, вам придется его отпустить. Попытайтесь поместить это в переопределение для метода разгрузки или если класс non-nib поместите его в dealloc.

+0

Я действительно синтезировал ownImg. In viewDidUnload Я пишу self.ownImg = nil; В dealloc [ownImg release]; Возможно, это потому, что я назначаю значение в viewWillAppear, чтобы вызвать утечку памяти? Так что я должен проверить, если self.ownImg! = Nil, а затем отпустите его, прежде чем назначать его снова? Спасибо. – Water7

+0

Просто используйте self.owning = newThing; Это освободит старый, сохранит новый и установит указатель на новый адрес. Эти синтезированные методы скрывают много кода. –

Смежные вопросы