0

このアイデアがカプセル化を完全に破ることは知っていますが、次のクラス拡張があるとします。

@interface MyClass () {
    int reallyImportantIvar;
}
// ...
@end

通常、クラスは Objective-C レイヤー内で本来あるべきように動作します-メッセージの送受信など。 C メソッド。もちろん、そうすると、パフォーマンスが重要なタスクの鍵であるreallyImportantIvarにアクセスできなくなります。

私には2つのオプションがあるようです:

  1. 代わりに、インスタンス変数を静的変数にします。
  2. Objective-C ランタイムを介してインスタンス変数に直接アクセスします。

私の質問は次のとおりです: オプション 2 も可能ですか? もしそうなら、そのオーバーヘッドはいくらですか? (例えば、とにかくクラスのインスタンス変数を検索するために、まだ O(n) アルゴリズムを見ているのでしょうか?)

4

3 に答える 3