gpt4 book ai didi

objective-c - 使用基本类型的属性

转载 作者:太空狗 更新时间:2023-10-30 03:15:30 24 4
gpt4 key购买 nike

我无法理解何时使用 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 Book List Sample Code

正如您所看到的,他们没有为 BOOL 使用属性,但他们在整个实现文件中都将其视为一个实例变量,读取值并设置值。在线搜索我发现确实使用这些类型的属性的教程,例如:(@property BOOL 标志)。有人可以为我阐明这个话题吗?谢谢。

最佳答案

是的,您应该为基本类型声明一个属性。唯一真正的区别是您应该使用分配(这是默认设置,因此您也可以不使用它)而不是复制或保留。我不能代表示例的其余部分,但它可能直接访问内部实例变量,或者如果它是从另一个类访问的,键值编码正在生成一个访问器(这是非常糟糕的形式)。我猜是前者;如果我不需要特殊的访问器并且实例变量没有在类外使用,我将直接引用它而不是声明一个属性。我想有些人可能会反对,但我觉得这有点过分。

关于objective-c - 使用基本类型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/424962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com