Управление памятью: ручное сохранение / разблокирование или методы доступа? - PullRequest
1 голос
/ 28 октября 2010

Каков наилучший подход с точки зрения:

  • безопасности и контроля утечек?
  • производительности?
  • видимости вне класса?

Первый : сохранение контроля над каждой переменной

if (objectProperty_ != anObject) {
    [objectProperty_ release];
    objectProperty_ = [anObject retain];
}

Второй : объявление свойств и использование методов доступа и разрешение работе системы

@property (nonatomic, readwrite, retain) NSObject *objectProperty;
...
@synthesize objectProperty = objectProperty_;
...
self.objectProperty = anObject;

Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Используйте свойства везде, где это возможно.

  1. Они избавляют вас от необходимости писать множество стандартных методов доступа.За несколько дней до свойств, вероятно, у каждого программиста Какао была пара макросов, которые они использовали для определения средств доступа.
  2. @property автоматически документирует семантику средства доступа.Например, в вашем примере я вижу из интерфейса, что objectProperty сохраняет свое значение, а не присваивает или копирует его.

Точка 2 сохраняется даже тогда, когда вы объявляете свойства, но определяете свои собственные методы доступа.

1 голос
/ 28 октября 2010

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

1 голос
/ 28 октября 2010

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

вызов метода доступа добавляет небольшое количество времени; Я рассчитал это на своем iPad, и я думаю, что это было около 10-7 секунд. Это должно быть правдой независимо от того, пишете ли вы метод самостоятельно или используете Apple. Во всех случаях, кроме самых экстремальных, это вряд ли имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...