速度属性を持つc++クラスBを所有するObjectiveCクラスAがあります。
使用しても大丈夫ですか
@property(nonatomic) float velocity;
クラスAで、そのクラスに速度属性がない場合でも。速度関数を実装するときは、Bに問い合わせてその値を返すので、クラスAの暗黙の属性のようなものです。
私はそれがうまくいくと思うので、私の質問はそれが良い習慣であるかどうかです。
速度属性を持つc++クラスBを所有するObjectiveCクラスAがあります。
使用しても大丈夫ですか
@property(nonatomic) float velocity;
クラスAで、そのクラスに速度属性がない場合でも。速度関数を実装するときは、Bに問い合わせてその値を返すので、クラスAの暗黙の属性のようなものです。
私はそれがうまくいくと思うので、私の質問はそれが良い習慣であるかどうかです。
絶対に大丈夫です。getterとsetterを正しく実装していると仮定すると、プロパティを持つクラスにメンバー変数がある必要はまったくありません。
KVOで問題が発生する可能性がありますが、このプロパティはKVOに準拠していません。それはほぼ間違いなく問題ではありません:)
このアプローチに問題はありません。C++ヘッダーがObjectiveCクラスの実装ファイルからのみ含まれていることを確認すると、純粋なObjectiveCインターフェイスを提示できます。これは私がより重要だと考えています。プロパティは値型であるため、プロパティにアクセスするとその値がコピーされます。このように見ると、プロパティにアクセスしたときに、ObjectiveCクラスの実装は何もエスケープされません。APIのクライアントを変更せずに、将来のどの段階でもプロパティの実装を自由に変更できます。
プロパティに値のセマンティクスがあることを指定するには、プロパティに割り当てのマークを付ける必要があります。
@property(nonatomic, assign) float velocity;