![](/img/trans.png)
[英]Objective-C/Cocoa: How to set value for a readonly property?
[英]Way to get information on whether or not a property is set readonly in objective-c
我在Objective-C中有一些屬性聲明為只讀,例如:
@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將包含所有與此Apple文檔有關的屬性
為了方便快捷:
objc_property_t prop = class_getProperty([object class], "aProperty");
const char * roAttr *property_copyAttributeValue(property, "R");
我不相信這些屬性是使用UTF8編碼的。 ;-)但不應有任何區別。
這樣,您不必構造許多NSString實例。
您不必選擇所需的屬性。
總是看看標題。 它是文檔的一部分。 (僅在runtime.h中記錄了property_copyAttribteValue()。)
考慮使用object_getClass()代替[object class]。 這取決於任務,您必須解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.