在objective-c中获取属性是否设置为只读信息的方法
我在objective-c中获得了一些声明为只读的属性,例如:在objective-c中获取属性是否设置为只读信息的方法,objective-c,properties,readonly,objective-c-runtime,Objective C,Properties,Readonly,Objective C Runtime,我在objective-c中获得了一些声明为只读的属性,例如: @property (nonatomic, readonly) NSString* aProperty; 我希望获得有关属性可读性的信息,以区别对待它们(例如,更改有关它们的信息在GUI中的显示方式)。这就是为什么我需要一种方法来询问属性是否为只读(我有一个属性名及其包含的对象的列表)。有没有办法做到这一点例如,使用objective-c运行时 objc_property_t prop = class_getPropert
@property (nonatomic, readonly) NSString* aProperty;
我希望获得有关属性可读性的信息,以区别对待它们(例如,更改有关它们的信息在GUI中的显示方式)。这就是为什么我需要一种方法来询问属性是否为只读(我有一个属性名及其包含的对象的列表)。有没有办法做到这一点例如,使用objective-c运行时
objc_property_t prop = class_getProperty([object class], [aProperty UTF8String]);
if (!prop) {
// doesn't exist for object
return nil;
}
const char * propAttr = property_getAttributes(prop);
NSString *propString = [NSString stringWithUTF8String:propAttr];
NSArray *attrArray = [propString componentsSeparatedByString:@","];
attrArray将包含引用此属性的所有属性,以使其更简单、更快速:
objc_property_t prop = class_getProperty([object class], "aProperty");
const char * roAttr *property_copyAttributeValue(property, "R");
好的,它是UTF-8或ASCII,任何用ASCII正确编码的东西也用UTF-8正确编码,所以这没有问题。请注意,属性通常公开声明为只读,私下声明为读写。不确定这会对代码产生什么影响。