このアイデアがカプセル化を完全に破ることは知っていますが、次のクラス拡張があるとします。
@interface MyClass () {
int reallyImportantIvar;
}
// ...
@end
通常、クラスは Objective-C レイヤー内で本来あるべきように動作します-メッセージの送受信など。 C メソッド。もちろん、そうすると、パフォーマンスが重要なタスクの鍵であるreallyImportantIvarにアクセスできなくなります。
私には2つのオプションがあるようです:
- 代わりに、インスタンス変数を静的変数にします。
- Objective-C ランタイムを介してインスタンス変数に直接アクセスします。
私の質問は次のとおりです: オプション 2 も可能ですか? もしそうなら、そのオーバーヘッドはいくらですか? (例えば、とにかくクラスのインスタンス変数を検索するために、まだ O(n) アルゴリズムを見ているのでしょうか?)