«Плохо» использовать @properties для частных переменных только для выгоды управления памятью? - PullRequest
9 голосов
/ 11 сентября 2009

Разве плохо создавать @properties для частных переменных только для преимуществ управления памятью?

Кажется грязным и неправильным иметь открытый доступ к @properties для многих приватных переменных.

(В основном, я освобождаю приватные ivars в условиях нехватки памяти, используя соответствующие методы "события".)

Пример: Я обычно делаю это, чтобы выпустить приватный ивар:

[name release]; name = nil;

Но с @properties я могу сделать это:

self.name = nil;

Позже в моем коде это будет сделано, поэтому необходимо установить значение nil:

if( !name)
    name = [[NSString alloc] initWithFormat:@"Hi %@",inputName];

Ответы [ 3 ]

23 голосов
/ 11 сентября 2009

Альтернативой является сохранение частной собственности. Вы можете использовать следующий код (в вашем файле .m), чтобы сделать свойство доступным только в вашем классе:

#import "MyClass.h"

@interface MyClass ()
    @property (retain) NSString* privateString; 
@end

@implementation MyClass

    @synthesize privateString;
    // Your code here

@end

Теперь у вас есть простота свойства, но другие классы по-прежнему не могут получить к нему доступ, даже если они импортируют ваш файл .h!

2 голосов
/ 11 сентября 2009

Свойства существуют для вашего удобства. Если вы не хотите, чтобы другие люди использовали свойства, существующие в ваших классах, просто не документируйте их.

0 голосов
/ 11 сентября 2009

Для общедоступных свойств я не думаю, что Apple рекомендует это, потому что иногда установка свойства для nil может иметь побочные эффекты, помимо простого освобождения переменной (уведомления KVO или пользовательский метод установки, который делает что-то еще).

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

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