2

たとえば、プロパティindexと ivarがある場合、 、および_indexを使用するのはまったく遅くなりますか?self.index[self index][self setIndex:]

4

1 に答える 1

3

アクセサーを使用すると、少なくともメソッド呼び出しのオーバーヘッドが発生します。

とはいえ、推測と証明は別物です。オーバーヘッドは大きい場合とそうでない場合があります。いずれの場合も、アプリケーションのプロファイリングにより、CPU時間が費やされた場所と、何を最適化する必要があるかが示されます。直接のivarでアクセサを使用すると、ポイントアクセサへのアプリケーションに影響を与えることは避けてください。

アトミックプロパティとコピープロパティははるかに遅くなります。これらの選択はより大きな影響を与えるため、より慎重に検討する必要があります。必要に応じて使用してください。

しかし、答えはアプリのプロファイリングにあります。

編集:

アクセサには多くの利点があります。カプセル化、クライアント、派生クラスとクラス自体の間のコードの一貫性、オーバーライド、必要に応じたプロパティアクセスのデバッグ、読み取り専用アクセスチェック...小さなパフォーマンス価格を支払う十分な理由があります。すべての正当な理由が必ずしも十分に良いとは限りません。;)

アクセサが問題になった場合、Objective-Cクラスはその仕事に適した選択ではないかもしれません。C ++クラスには、高速になる機会が多くあります。非仮想メソッド、インラインメソッド、スタックベースのインスタンス...

于 2012-06-22T10:41:36.027 に答える