2016-10-10 18 views
0

のiOSで "__NSSingleXXXI" プライベートクラスを追加しますコンテナのクラスタは、これら3つの新しいクラスを使用します。はなぜ追加された3つの新しいプライベートクラスは、iOSの10</p> <ul> <li>__NSSingleObjectArrayI</li> <li>__NSSingleObjectSetI</li> <li>__NSSingleEntryDictionaryI単一のオブジェクトと</li> </ul> <p>コンテナのinitであり、10

iOS 9では、 '__NSArray0'と '__NSDictionary0'も追加されました。

私はこれらの特殊なプライベートクラスを追加する理由はわかりません。誰かが私に理由を教えてくれますか?

+0

プライベートクラスは、Appleの内部使用のみのクラスです。ユーザー/私たちは使用できません(あなたがiPhoneを調整または脱獄しない限り)。だから、新しいプライベートクラスを追加したり削除したりするのは、内部的な必要性に基づいています。リンゴのプログラマーだけが、なぜ彼らが追加されたのかを伝えることができます。 –

答えて

5

これは単なる最適化です。たとえば、__NSSingleObjectSetIは実際のハッシュテーブルを気にする必要はありません。なぜなら、1つのオブジェクトだけが気になるからです。 containsObject:のようなメソッドは、何もループしたり、何かを見たりする必要はありません。単純に、引数をset/array/dictionaryが表す単一オブジェクトと単純に比較できます。

同様に、__NSArray0(空の配列に使用されていると仮定します)はarrayByAddingObjectsFromArray:のようなメソッドを持つことができ、単に引数にcopyを送信して返します。それにもかかわらず、マイナーな最適化です。

これらのクラスを直接(もちろんプライベートで実装の詳細なので)使用しないでください。フレームワークはこれらのクラスを自動的に使用します。 実装の詳細なので、私はこれらのプライベートクラスの真の目的を特定することはできません、私は推測しています。

関連する問題