30

here の回答で見つけたobj-cランタイムアプローチを使用して、クラスからプロパティを取得しようとしていますが、コーディング時に多くの警告/エラーが発生します。ライブラリをインポートするか、何かを作成する必要がありますか? obj-c ランタイム関数を利用できるようにするにはどうすればよいですか?

objc_property_t *properties = class_copyPropertyList([自己クラス], &outCount);

警告: 「関数 'class_copyPropertyList' の暗黙の宣言は C99 では無効です エラー: 宣言されていない識別子 'objc_property_t' の使用

これは私がコピーしたチャンク全体です:

unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for (i = 0; i < outCount; i++) {
    objc_property_t property = properties[i];
    NSString *propertyName = [[NSString alloc] initWithCString:property_getName(property)];
    id propertyValue = [self valueForKey:(NSString *)propertyName];
    if (propertyValue) [props setObject:propertyValue forKey:propertyName];
}
free(properties);

前もって感謝します!。

4

1 に答える 1

89

ランタイムをインポートする必要があります

#import <objc/runtime.h>
于 2012-07-12T17:08:06.517 に答える