Свойства и переменные экземпляра в Objective-C

Я довольно запутался в свойствах и переменных экземпляра в Objective-C.

Я на полпути к «Программированию какао для Mac OS X» Аарона Хиллегаса, и все логично. Вы бы объявили класс примерно так:

@class Something;

@interface MyClass : NSObject {
    NSString *name;
    NSArray *items;

    Something *something;

    IBOutlet NSTextField *myTextField;
}

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSArray *items;

Поскольку другие объекты должны манипулировать нашимиname а такжеitems переменные экземпляра, мы используем@property/@synthesize генерировать аксессоры / мутаторы для них. В нашем классе мы не используем аксессоры / мутаторы - мы просто напрямую взаимодействуем с переменной экземпляра.

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

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

Все очень логично.

Однако в мире iPhone все выглядит иначе. Люди объявляют свойства для каждой переменной экземпляра, объявляют свойства дляIBOutletsи использовать аксессоры / мутаторы для взаимодействия с переменными экземплярав класс (например, они написали бы[self setName:@"Test"] скорее, чемname = @"Test").

Почему? Что происходит? Эти различия характерны для iPhone? Каковы преимущества объявления свойств для всех переменных экземпляра, объявления свойств дляIBOutletsи использование аксессоров / мутаторов в вашем собственном классе?

Ответы на вопрос(5)

Ваш ответ на вопрос