ABC *abc=[ABC new];
id property=abc.property;
但:
id ClassName=NSClassFromString(ABC);
id instance=[ClassName new];
id property=???????;
我不能使用instance.property,因为它是id类型。
我想从(id)类型类中获取已知属性。
我尝试使用:
[aInstanse propertyForKey:<#(NSString *)#>];
[aInstanse propertyNamed:<#(NSString *)#>];
但程序崩溃......
你能帮助我吗,谢谢你。答案 0 :(得分:8)
有很多方法
如果您在编译时知道类型
,则可以将其强制转换id property=((MyClass *)instance).myProperty;
((MyClass *)instance).myProperty = property;
或不使用点语法
id property=[instance myProperty];
[instance setMyProperty:property];
或使用valueForKey:
id property=[instance valueForKey:@"myProperty"];
[instance setValue:property forKey:@"myProperty"];
答案 1 :(得分:0)
您可以使用默认属性和@synthesize
将创建的标准getter和setter:
[instance property];
[instance setProperty:value];
答案 2 :(得分:0)
如果您确定您的类具有某些属性,并且您知道此属性的名称,则可以创建一个接口来调用它。 当然,你必须将你的对象转换为这个类的对象!
祝你好运!