0

速度属性を持つc++クラスBを所有するObjectiveCクラスAがあります。

使用しても大丈夫ですか

@property(nonatomic) float velocity;

クラスAで、そのクラスに速度属性がない場合でも。速度関数を実装するときは、Bに問い合わせてその値を返すので、クラスAの暗黙の属性のようなものです。

私はそれがうまくいくと思うので、私の質問はそれが良い習慣であるかどうかです。

4

2 に答える 2

0

絶対に大丈夫です。getterとsetterを正しく実装していると仮定すると、プロパティを持つクラスにメンバー変数がある必要はまったくありません。

KVOで問題が発生する可能性がありますが、このプロパティはKVOに準拠していません。それはほぼ間違いなく問題ではありません:)

于 2012-09-10T12:29:22.687 に答える
0

このアプローチに問題はありません。C++ヘッダーがObjectiveCクラスの実装ファイルからのみ含まれていることを確認すると、純粋なObjectiveCインターフェイスを提示できます。これは私がより重要だと考えています。プロパティは値型であるため、プロパティにアクセスするとその値がコピーされます。このように見ると、プロパティにアクセスしたときに、ObjectiveCクラスの実装は何もエスケープされません。APIのクライアントを変更せずに、将来のどの段階でもプロパティの実装を自由に変更できます。

プロパティに値のセマンティクスがあることを指定するには、プロパティに割り当てのマークを付ける必要があります。

@property(nonatomic, assign) float velocity;
于 2012-09-10T12:44:13.550 に答える