Вопрос 1
Это означает, что сообщения доступа к синтезированным свойствам будут включать автоматическое сохранение при вызове сообщения (но ТОЛЬКО при вызове сообщения, см. Далее).
Вопрос 2
Это потому, что вы не используете сообщение доступа к свойству, а просто присваиваете переменную-член.Если вы используете:
self.preview = [[[UIImageView alloc] init] autorelease];
Итоговый счет удержания будет равен единице (+1 для init, -1 для автоматического выпуска, +1 для сохранения в сообщении).
NB
Вы получите тот же счет хранения (один), если сделаете это:
preview = [[UIImageView alloc] init];
(+ 1 для инициализации, без использования сообщения доступа к свойству, поэтому нет дополнительного сохранения).В зависимости от того, как вы поступите.
Вопрос 3
addSubview снова увеличит счет сохранения, поскольку preview будет сохранен вколлекция, которая будет сохранять свои объекты.
Так что да, в основном, если вы передаете объект другому объекту для управления (как в случае с addSubview), вы можете установить его на автоматический выпуск, и он будет освобожден другим объектом.Однако, поскольку вы сохраняете UIImageVIew в сохраненном свойстве, вам нужно будет разблокировать его самостоятельно (см. Далее).
Вопрос 4
Поскольку вы сохраняетеПредварительный просмотр объекта как сохраненного свойства, вам нужно будет опубликовать его в сообщении Deloc.Таким образом, в моем примере Question 2 вы выделяете объект, автоматически освобождаете его, но присваиваете ему сохраняемое свойство, так что после счетчика retain после всего этого вы добавляете его в коллекцию, которая также сохраняетЭто.Когда представление очищено, коллекция уменьшит счет сохранения, но вам также потребуется вызвать release, потому что вы сохранили его в сохраненном свойстве.Итак, в вашем dealloc:
[preview release];
Вопрос 5
imageNamed - это вспомогательное сообщение, которое выполняет выделение, инициализацию и авто-выпуск.Таким образом, в основном это эквивалентно высказыванию.
NSData * dataForImage = get data from the myImage.png here ...
self.flag = [[[UIImage alloc] initWithData:dataForImage] autorelease];
Вы сохраняете его в сохраненном свойстве (потому что я использую self.flag в приведенном выше примере), поэтому вам нужно будет отпустить его в сообщении dealloc.