Со свойствами в obj-c, нужно ли нам объявлять переменные экземпляра? - PullRequest
4 голосов
/ 03 мая 2011

Со свойствами в obj-c, нужно ли нам объявлять переменные экземпляра?

Например, если мой .h файл выглядит так:

@interface MyClass : NSObject {
}

@property (nonatomic, retain) NSNumber *someId;
@property (nonatomic, retain) NSDate *expires;
@property (nonatomic, retain) NSString *someString;

...

Это хорошо? Он компилируется и работает, это «готовая вещь»? Или я действительно должен делать следующее:

@interface MyClass : NSObject {
    NSNumber *someId;
    NSDate *expires;
    NSString *someString;
}

@property (nonatomic, retain) NSNumber *someId;
@property (nonatomic, retain) NSDate *expires;
@property (nonatomic, retain) NSString *someString;

...

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

@synthesize позаботится о создании экземпляров vars для меня?

Ответы [ 2 ]

5 голосов
/ 03 мая 2011

Вы правильно поняли, @synthesize позаботится о создании ivars для вас.(Это новая функция среды выполнения, совместимая с 64-битными компьютерами Mac и iOS.)

Что приятно, так это то, что вы можете @property в своем расширении класса и скрыть свои иварыполностью из .h, полностью отделяя интерфейс от реализации.

Вы также можете полностью удалить '{}' из .h, делая его действительно чистым.

1 голос
/ 03 мая 2011

Обнаружено в документах Apple:

В современной среде выполнения, если вы не предоставите переменную экземпляра, компилятор добавит ее для вас

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