我有一个目标 c 类A ,它拥有一个具有速度属性的 c++ 类B。
可以使用吗
@property(nonatomic) float velocity;
在A类中,即使该类没有速度属性。当我实现速度函数时,我会询问B并返回该值,所以它是类A的一种隐式属性。
我想它有效,所以我的问题是这是否是一种好习惯。
我有一个目标 c 类A ,它拥有一个具有速度属性的 c++ 类B。
可以使用吗
@property(nonatomic) float velocity;
在A类中,即使该类没有速度属性。当我实现速度函数时,我会询问B并返回该值,所以它是类A的一种隐式属性。
我想它有效,所以我的问题是这是否是一种好习惯。
绝对没问题。假设您已经正确实现了 getter 和 setter,那么具有属性的类根本不需要成员变量!
尽管您可能会遇到 KVO 的问题 - 此属性不符合 KVO。不过,这几乎肯定不是问题:)
我认为这种方法没有任何问题。如果您确保 C++ 标头仅包含在 Objective C 类的实现文件中,那么您可以呈现一个纯 Objective C 接口,我认为这更重要。该属性是一种值类型,因此在访问该属性时会复制其值。以这种方式来看,当访问该属性时,Objective C 类的任何实现都不会逃逸。您可以在未来的任何阶段自由更改属性实现,而无需更改 API 的任何客户端。
该属性应标记为分配以指定它具有值语义。
@property(nonatomic, assign) float velocity;