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

但是程序崩溃...

你能帮帮我吗,谢谢。

4

3 回答 3

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"];
于 2013-05-21T02:50:45.067 回答
0

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

祝你好运!

于 2013-05-21T02:52:59.943 回答
0

您可以只使用标准的 getter 和 setter,它们具有默认属性@synthesize并将创建:

[instance property];
[instance setProperty:value];
于 2013-05-21T02:44:18.760 回答