Использование свойств для примитивных типов
У меня возникли проблемы с пониманием того, когда следует использовать свойства Objective C 2.0. Кажется, вам не нужно свойство для примитивного типа, например: int, bool, float. Это правда? Я видел примеры, показывающие свойства этих типов, и другие, оставляя их. Например, в примере кода Apple они имеют:
...
@interface Book : NSObject {
// Primary key in the database.
NSInteger primaryKey;
// Attributes.
NSString *title;
NSDate *copyright;
NSString *author;
BOOL hydrated;
BOOL dirty;
NSData *data;
}
@property (assign, nonatomic, readonly) NSInteger primaryKey;
// The remaining attributes are copied rather than retained because they are value objects.
@property (copy, nonatomic) NSString *title;
@property (copy, nonatomic) NSDate *copyright;
@property (copy, nonatomic) NSString *author;
...
Пример кода приложения Apple SQLite
Итак, вы можете видеть, что они не используют свойство BOOL, но они рассматривают его как переменную экземпляра в файле реализации, считывая значение и устанавливая значение.
Поиск в Интернете Я нашел учебные пособия, которые используют свойства для этих типов, такие как: (флаг @property BOOL). Может кто-то пролить свет на эту тему для меня? Спасибо.
Ответы
Ответ 1
Да, вы должны объявить свойство для примитивных типов. Единственное реальное различие заключается в том, что вы должны использовать назначение (которое по умолчанию, поэтому вы также можете оставить его) вместо копирования или сохранения. Я не могу говорить для остальной части примера, но он, вероятно, напрямую обращается к внутренней переменной экземпляра, или если к нему обращаются из другого кода ключа класса, генерируется аксессор (что очень плохо). Я предполагаю, что это первое; если мне не нужен специальный аксессор, и переменная экземпляра не используется вне класса, я просто буду ссылаться на нее напрямую, а не объявлять свойство. Некоторые люди могут возразить против этого, я полагаю, но для меня это кажется немного чрезмерным.