Emp*_*ack 29 cocoa objective-c objective-c-runtime
我想将字符串转换为类名.想象一下,我有一个更改的字符串,包含一个类名,例如字符串"MyExampleClass"
.现在,我想创建一个类的对象MyExampleClass
.我必须从字符串中获取类名.我想做类似以下的事情.(将代码视为草图.)
NSString *classNameStr = "MyExampleClass";
id theClass = [UIClass classFromString:classNameStr];
theClass *myObject = [[theClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
Ale*_*lex 76
这是你想要的:
Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
请注意,您不能theClass
用作类型名称(即theClass *myObject
).你必须使用id
它.
jus*_*tin 23
你想要NSClassFromString
:
NSString *classNameStr = @"MyExampleClass";
Class theClass = NSClassFromString(classNameStr);
id myObject = [[theClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
您还可以使用objc运行时接口(例如objc_getClass(const char* name)
,objc_lookUpClass(const char* name)
).前者不会加载一个类.后者会.在某些情况下,这个选项可能是件好事.
id a = [[NSClassFromString(@"MyExampleClass") alloc] init];
Run Code Online (Sandbox Code Playgroud)
使用这个,这将给你你想要的.
归档时间: |
|
查看次数: |
16486 次 |
最近记录: |