开发者社区> 问答> 正文

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

iPhone开发的类都是通过

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

展开
收起
a123456678 2016-07-19 15:32:04 1720 0
1 条回答
写回答
取消 提交回答
  • 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消息。

    2019-07-17 19:58:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载