Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Objective-C中的字符串实例化类的对象?_Objective C_Instantiation - Fatal编程技术网

如何从Objective-C中的字符串实例化类的对象?

如何从Objective-C中的字符串实例化类的对象?,objective-c,instantiation,Objective C,Instantiation,我有一个字符串,它的值是必须实例化的类[MyClass]的名称,MyClass有一个名为 -(void)FunctionInClass; 我正在使用名为NSClassFromString的方法来实例化MyClass。我想知道 1) what does NSClassFromString return?? 2) what is id? 3) How to call method -(void)FunctioninClass which is in MyClass using the ins

我有一个字符串,它的值是必须实例化的类[MyClass]的名称,MyClass有一个名为

 -(void)FunctionInClass;
我正在使用名为NSClassFromString的方法来实例化MyClass。我想知道

1) what does NSClassFromString return?? 
2) what is id? 
3) How to call method -(void)FunctioninClass which is in MyClass using the instance.
我应该如何继续,我在Objective-C for iPhone应用程序中执行此操作?

1)NSClassFromString返回什么??

它返回一个类,这意味着您可以执行
[[NSClassFromString(@“MyClass”)alloc]init]
有关更多信息,请参阅

2)什么是id?

3)如何使用实例调用MyClass中的方法-(void)FunctioninClass。

id myclass = [[NSClassFromString(@"MyClass") alloc] init];
[myclass FunctioninClass];
NSClassFromString()是一个返回Objective-C类的函数。也就是说,在Objective-C中,阶级是一个光荣的对象。“类”类的实例

那么Objective-C课程有什么好处呢

用于实例化对象(通过alloc init) 用于内省和反射-查询该类的方法和属性实例是否向用户公开 对于该类的存档/取消存档实例,以及。。。 能够运行类方法(不需要该类的任何特定实例的方法)


最后几行实际上创建了一个类的实例,其名称是传递给NSClassFromString的字符串。

AFAICT,NSClassFromString是一个函数,而不是一个类。如果NSClassFromString返回一个类,则第1点将成为NSClassFromString(@“MyClass”)@第1点,然后那个类必须被实例化,然后我们可以调用FunctioninClass方法,对吗?但是@point 3)我们直接使用名为myclass的类和调用函数。我尝试了第3点)它给了我一个错误:MyClass未声明(在函数中首次使用)和MyClass未声明(在函数中首次使用)如下尝试:id MyClass=[[NSClassFromString(@“MyClass”)alloc]init];如果调用代码不知道MyClass是什么,您将得到所描述的错误。通过使用id作为变量类型,可以避免这种情况。如果在FunctioninClass中设置断点,该断点会被命中吗?下面是一个简单的cocoa应用程序,它似乎可以满足您的需要。我创建了一个名为“Untitled”的新Xcode项目。