如何在Objective-C中从字符串中实例化类的对象?

时间:2010-02-09 03:45:24

标签: objective-c instantiation

我有一个字符串,它的值是必须实例化的类[MyClass]的名称,而MyClass有一个名为

的方法
 -(void)FunctionInClass;

我正在使用名为NSClassFromString的方法来实例化MyClass。我想知道

1) what does NSClassFromString return?? 
2) what is id? 
3) How to call method -(void)FunctioninClass which is in MyClass using the instance.

我应该如何继续,我是在Objective-C for iPhone app中做的?

2 个答案:

答案 0 :(得分:51)

1) what does NSClassFromString return??

它返回一个Class,这意味着你可以[[NSClassFromString(@"MyClass") alloc] init]; 有关详细信息,请参阅Mac Dev Center Docs

2) what is id?

请参阅http://www.otierney.net/objective-c.html#idtype

3) How to call method -(void)FunctioninClass which is in MyClass using the instance.

id myclass = [[NSClassFromString(@"MyClass") alloc] init];
[myclass FunctioninClass];

答案 1 :(得分:0)

NSClassFromString()是一个返回Objective-C类的函数。也就是说,在Objective-C中,类是一个光荣的对象。 “ Class”类的实例...

Objective-C类的优点是什么?

用于实例化对象(通过alloc init) 进行内省和反思-向用户查询该类的方法和属性实例向用户公开 用于存档/取消存档该类的实例,以及... 能够运行类方法(不需要该类任何特定实例的方法。

最后一行实际上创建了一个类的实例,该类的名称是传递给NSClassFromString的字符串。