Convert a string (“MyExampleClass”) into a class name (MyExampleClass)

柔情痞子 提交于 2019-11-29 23:56:57

Here's what you'd want:

Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];

Note that you can't use theClass as a type name (i.e. theClass *myObject). You'll have to use id for that.

You want NSClassFromString:

NSString *classNameStr = @"MyExampleClass";
Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];

You can also use the objc runtime interfaces (e.g. objc_getClass(const char* name), objc_lookUpClass(const char* name)). The former will not load a class. The latter will. That option could be a good thing in some cases.

id a = [[NSClassFromString(@"MyExampleClass") alloc] init];

use this one this will give you what you want.

If you are trying to build your classes dynamically, I recommend you to better take a look at the factory method design pattern, otherwise you will be loosing track of who builds what and how.

To do so, you can code a class that receives a string and returns a class depending on the input string.

Take a look at the book "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!