クラスの外部からivarにアクセスするためのプロパティを使用してクラスを定義できます。
myInst-> ivar構文を使用して、C構造体でアクセスすることもできます。
C ++ではアクセサーを使用しますが、Objective-Cでは直接アクセスしたい場合があります。メッセージはC++メソッドの場合のようにインライン化されていないため、メッセージングシステムでは、一部のコンテキストで重要なアクセサーで大きなパフォーマンスヒットが発生します。
たとえば、スカラーと呼ばれるivarとそれに定義されたプロパティを持つクラスで。スカラーは単純なfloat値です。
-(void) doWorkWithMyClass:(MyClass*)myinst
{
// array and other locals declaration omitted
for (int i = 0; i < reallyBigX; i++) {
result += [myinst scalar] * array[i];
[myinst computeNextScalar:i];
}
}
[myinstscalar]をmyinst->scalarに変更すると、アクセサーで呼び出しを使用するとこのループでCPUの大部分が使用されるため、メソッドの実行速度が大幅に向上します。
C ++と同様に、ivarへの直接アクセスは一般的に推奨されていないことを理解していますが、このコンテキストでは、速度が重要な場合、それは許容されますか?そうでない場合でも、objective-cクラスを使用するより好ましいメソッドはありますか?