使用构成属性的属性

时间:2012-09-10 12:24:42

标签: objective-c properties attributes

我有一个客观的c类 A ,它拥有一个具有velocity属性的c ++类 B

可以使用

@property(nonatomic) float velocity;

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

我想这很有效,所以我的问题是它是不是很好的做法。

2 个答案:

答案 0 :(得分:0)

绝对没问题。假设您已正确实现了getter和setter,则不要求具有属性的类具有成员变量!

虽然您可能遇到KVO问题 - 此属性不符合KVO。这几乎肯定不是问题,但是:)

答案 1 :(得分:0)

我认为这种方法没有任何问题。如果确保仅从Objective C类的实现文件中包含C ++标头,那么您可以提供纯粹的Objective C接口,我认为这更重要。该属性是一个值类型,因此在访问该属性时会复制它的值。以这种方式查看时,在访问属性时,Objective C类的任何实现都不会转义。您可以在将来的任何阶段更改属性实现,而无需更改API的任何客户端。

该属性应标记为assign以指定它具有值语义。

@property(nonatomic, assign) float velocity;