Это автоматически выпущено
image = [UIImage imageNamed:@"default.png"];
Это не
image = [[UIImage alloc] initWithContentsOfFile:pngFilePath];
Вам нужно сделать это:
image = [[[UIImage alloc] initWithContentsOfFile:pngFilePath] autorelease];
Правило состоит в том, что если имя вашего метода начинается с alloc
, new
, copy
или muteableCopy
, вы владеете им, и вам необходимо освободить его самостоятельно, либо с release
, либо с autorelease
. Все остальное не ваше, поэтому вы не должны выпускать его.
Если вы вызываете retain
для объекта, вы должны release
(или autorelease
) его столько же раз:)