クラスのインスタンスとクラス自体の両方に「子」があるアプリケーションを実装しています( 内に配置されていますNSMutableArray
)。これはかなり複雑なアプリケーションですが、Objective-C のおかげでとても簡単です。クラスはそれ自体がオブジェクトであり、メソッドと「変数」を持つことができます (静的変数などの助けを借りて)。
簡単にするために、インスタンス ( を使用-
) とクラス ( を使用) の両方にアクセサー/セッター メソッドを実装+
して、配列に直接アクセスせずに「子」を取得して操作しました。オブジェクトを可能な限り閉じて、メソッドでデータ検証を行うようにしています。
また、プロトコルから高速列挙インスタンスメソッドを実装しました。ここで質問があります。高速な列挙型クラスNSFastEnumeration
メソッドを実装して、それを Objective-C のコンストラクトで使用できますか? つまり、これを実装できますか:for...in
+ (NSUInteger)countByEnumeratingWithState: (NSFastEnumerationState *)state objects: (__unsafe_unretained id [])buffer count: (NSUInteger)len;
そして、そのような場所で使用します:
for (id child in [MyClass class]) {
// Do magic stuff…
}
マクロとして高速な列挙を実装する GNUStep のGSFastEnumeration.h
ファイルを覗いてみたところ、上記が可能であることが確認されましたが、Apple が同じことを行っているかどうかはわかりません。
プロトコルを自分のクラス オブジェクトに関連付けることができなくても、NSFastEnumeration
そのプロトコルを使用せずに高速な列挙を行うことはできますか (そして将来的に保証されますか)?