您好,匿名用户
随意问技术百科期待您的加入

ios怎么在运行时,通过一个NSString new一个类

0 投票

iPhone开发的类都是通过

[[ClassName alloc] init];

来new一个类,都是编译阶段就处理好的。
但是,我有一个需求,就是要根据用户的输入来new几个类。。。
要怎么通过获取到的NSString类型的ClassName来初始化这个类啊。。。
还有,这个实例初始化以后,怎么动态的调用他的方法呢?

用户头像 提问 2012年 12月1日 @ Capricorn 上等兵 (188 威望)
分享到:

1个回答

0 投票
 
最佳答案

1.已知类名@"SomeClassName",初始化此类的一个实例:

Class someClass = NSClassFromString(@"SomeClassName");
id obj = [[someClass alloc] init];

比如想初始化个UILabel

id obj = [[NSClassFromString(@"UILabel") alloc] init];
NSLog(@"What is obj : %@", obj);

类似的还有:
2.已知对象someObject,初始化一个和someObject相同类型的:

Class someClass = [someObject class];
id obj = [[someClass alloc] init];

3.已有类SomeClass,初始化SomeClass的一个实例:

Class someClass = [SomeClass class];
id obj = [[someClass alloc] init];

其实和[[SomeClass alloc] init]一样,意义不大

最后:
Cocoa中所有的类都是Class的实例,类可以接受alloc消息。

用户头像 回复 2012年 12月1日 @ Malzahar 上等兵 (335 威望)
选中 2012年 12月1日 @Capricorn
提一个问题:

相关问题

0 投票
1 回复 60 阅读
0 投票
1 回复 42 阅读
0 投票
1 回复 57 阅读
0 投票
1 回复 51 阅读
0 投票
1 回复 140 阅读
用户头像 提问 2012年 12月1日 @ Rumble 上等兵 (394 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...