Apple Руководство по программированию управления памятью показывает три официально санкционированных метода для написания методов доступа, которые должны сохранять или освобождать ссылки на объекты.
В случае первых двух методов (воспроизведенных ниже)В документации Apple говорится, что «[t] производительность метода 2 значительно лучше, чем методика 1 в ситуациях, когда геттер вызывается гораздо чаще, чем сеттер».
// Technique 1
- (NSString*) title
{
return [[title retain] autorelease];
}
- (void) setTitle: (NSString*) newTitle
{
if (title != newTitle)
{
[title release];
title = [newTitle retain]; // Or copy, depending on your needs.
}
}
// Technique 2
- (NSString*) title
{
return title;
}
- (void) setTitle: (NSString*) newTitle
{
[title autorelease];
title = [newTitle retain]; // Or copy, depending on your needs.
}
Это единственное отличие?между техникой 1 и техникой 2, или использование одного над другим имеет другие тонкие последствия, о которых мне, возможно, нужно знать?И если в методике 2 используется более эффективный метод получения, следует ли из этого, что в методике 1 используется более эффективный метод установки, поскольку title
получает явный (и предположительно немедленный) выпуск?