Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将属性用于合成属性 我有一个目标C类 a ,它拥有C++类 b>强>具有速度属性。< /p>_Objective C_Properties_Attributes - Fatal编程技术网

Objective c 将属性用于合成属性 我有一个目标C类 a ,它拥有C++类 b>强>具有速度属性。< /p>

Objective c 将属性用于合成属性 我有一个目标C类 a ,它拥有C++类 b>强>具有速度属性。< /p>,objective-c,properties,attributes,Objective C,Properties,Attributes,可以用吗 @属性(非原子)浮动速度 在类A中,即使该类没有速度属性。当我实现 速度函数我将询问B并返回该值,因此它是类A的一种隐式属性 我想这是可行的,所以我的问题是这是否是一个好的做法。绝对好。假设您已经正确地实现了getter和setter,那么就不需要具有属性的类具有成员变量 尽管您可能会遇到KVO问题-此属性不符合KVO。这几乎肯定不是问题:)我认为这种方法没有任何问题。如果你确保C++头部只包含在目标C类的实现文件中,那么你可以呈现一个纯目标C接口,我认为它更重要。该属性是值类型,因此

可以用吗

@属性(非原子)浮动速度

在类A中,即使该类没有速度属性。当我实现 速度函数我将询问B并返回该值,因此它是类A的一种隐式属性


我想这是可行的,所以我的问题是这是否是一个好的做法。

绝对好。假设您已经正确地实现了getter和setter,那么就不需要具有属性的类具有成员变量


尽管您可能会遇到KVO问题-此属性不符合KVO。这几乎肯定不是问题:)

我认为这种方法没有任何问题。如果你确保C++头部只包含在目标C类的实现文件中,那么你可以呈现一个纯目标C接口,我认为它更重要。该属性是值类型,因此在访问该属性时会复制其值。以这种方式来看,当访问属性时,目标C类的任何实现都不会逃逸。您可以在将来的任何阶段自由更改属性实现,而无需更改API的任何客户端

属性应标记为assign,以指定其值语义

@property(nonatomic, assign) float velocity;