我无法理解何时在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 flag).有人可以为我阐明这个话题吗?谢谢.
是的,您应该声明基本类型的属性.唯一真正的区别是您应该使用assign(这是默认值,因此您也可以将其保留),而不是复制或保留.我不能代表示例的其余部分,但它可能直接访问内部实例变量,或者如果从另一个类访问它,则键值编码生成一个访问器(这是非常糟糕的形式).我猜它是前者; 如果我不需要特殊的访问器并且实例变量不在类外使用,我将直接引用它而不是声明属性.有些人可能会反对我的想法,但对我来说似乎有些过分.