2009-04-01 1 views

ответ

6

Нет, не следует. Старое изображение должно быть автоматически выпущено, когда вы устанавливаете новый, а метод «imageNamed» использует функцию autorelease, поэтому вы должны быть в порядке.

1

Это зависит от того, как определяется свойство image. Если он определен как retain или, я полагаю, даже copy, все должно быть хорошо. В конечном итоге вы попытаетесь ссылаться на освобожденную память и сбой вашей программы, если она определена как assign.

0

Обычно, но это зависит от того, как вы определили пейзаж. См. Сообщение выше. Будьте осторожны с использованием многих из них:

[UIImage imageNamed:@"tenerife1.png"]; 

Поскольку существует тенденция к тому, чтобы эти изображения заполняли память, не освобождая ее.

+0

что я должен использовать вместо этого? – Thanks

4

эй учтите imageNamed имеет серьезные проблемы с памятью, поскольку вы теряете контроль над его кешем - то есть: как только вы закончите с вашим изображением, вы не сможете вернуть эту память. быстрый поиск Google позволит вам знать, сколько людей столкнулись с проблемами с imageNamed

я был на переговорах технологий яблоко iphone и парень дает представление подтвердил ту же проклятую вещь - он предложил использовать imageWithContentsOfFile вместо imageNamed

, если у вас есть только несколько небольших изображений, в противном случае используйте imageWithContentsOfFile, хотя он немного медленнее - и реализуйте свою собственную логику кэширования - проверьте эту замечательную ссылку о том, как это сделать. here