property_getAttributes()ランタイム関数を使用して、オブジェクトのプロパティ属性を取得しようとしています。一部のプロパティは読み取り専用に設定されています。しかし、retain/strong、weak、および assign プロパティを区別しようとすると、問題が発生します。例えば:
私たちが持っているとしましょう:
@interface MyObject : NSObject
@property (assign, readonly) NSObject *prop1;
@property (strong, readonly) NSObject *prop2;
@property (weak, readonly) NSObject *prop3;
@end
プロパティリストを取得して印刷します
int outCount;
objc_property_t *properties = class_copyPropertyList([MyObject class], &outCount);
for(i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
const char *c_attributes = property_getAttributes(property);
printf("%s", c_attributes);
}
free(properties);
結果は次のとおりです。
T@"NSObject",R,V_prop1
T@"NSObject",R,V_prop2
T@"NSObject",R,V_prop3
...したがって、弱い、強い/保持するための特定のコードはなく、読み取り専用の場合にプロパティを割り当てます:(
問題は、プロパティが弱い、強い/保持する、割り当てているかどうかを知る他の方法はありますか?