从id类获取属性

时间:2013-05-21 02:42:55

标签: objective-c class properties

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 *)#>];

但程序崩溃......

你能帮助我吗,谢谢你。

3 个答案:

答案 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)

如果您确定您的类具有某些属性,并且您知道此属性的名称,则可以创建一个接口来调用它。 当然,你必须将你的对象转换为这个类的对象!

祝你好运!