クラス内のすべての (パブリック) プロパティの NSDictionary を自動的に返す方法はありますか? すべてのプロパティがプロパティ リストであり、クラス自体へのポインタを渡したくないと考えることができます。これを実現できる既存の魔法はありますか?
NSDictionary を遅延インスタンス化し、getter でプロパティを手動で入力できることはわかっています。
クラス内のすべての (パブリック) プロパティの NSDictionary を自動的に返す方法はありますか? すべてのプロパティがプロパティ リストであり、クラス自体へのポインタを渡したくないと考えることができます。これを実現できる既存の魔法はありますか?
NSDictionary を遅延インスタンス化し、getter でプロパティを手動で入力できることはわかっています。
Objective-C ランタイムでclass_copyPropertyList
および関数を使用して、宣言されたプロパティの配列を簡単に取得できます。property_getName
そのような実装の 1 つを次に示します。
- (NSArray *)properties
{
NSMutableArray *propList = [NSMutableArray array];
unsigned int numProps = 0;
unsigned int i = 0;
objc_property_t *props = class_copyPropertyList([TestClass class], &numProps);
for (i = 0; i < numProps; i++) {
NSString *prop = [NSString stringWithUTF8String:property_getName(props[i])];
[propList addObject:prop];
}
return [[propList copy] autorelease];
}
これを のカテゴリにメソッドとして追加できますNSObject
。これを示す、コンパイル可能な完全なコード リストを次に示します。
NSDictionary
キーと値のペアが何であると期待されているのかわからないという理由だけで、 でどのようにそれを行ったのかわかりません。