iPhone开发的类都是通过
[[ClassName alloc] init];
来new一个类,都是编译阶段就处理好的。
但是,我有一个需求,就是要根据用户的输入来new几个类。。。
要怎么通过获取到的NSString类型的ClassName来初始化这个类啊。。。
还有,这个实例初始化以后,怎么动态的调用他的方法呢?
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消息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。