Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 什么';做alloc和class_createInstance的区别是什么_Objective C - Fatal编程技术网

Objective c 什么';做alloc和class_createInstance的区别是什么

Objective c 什么';做alloc和class_createInstance的区别是什么,objective-c,Objective C,想知道,使用以下内容创建类有什么区别: Class clazz = [NSString class]; [clazz alloc]; 及 一个是函数,另一个是方法。由于函数是函数,因此不能重载该函数。该方法(因为它是一种方法)可以以不同的方式实现 例如,由于Cocoa中的某些类(例如集合)是类集群,因此它们可能重写+alloc以实现自定义行为。在使用函数时,您无法使用此功能。这里有一个说明: 基本上,类createInstance是为Cocoa实现者提供的,并为他们提供对流程的低级访问。AP

想知道,使用以下内容创建类有什么区别:

Class clazz = [NSString class];
[clazz alloc];


一个是函数,另一个是方法。由于函数是函数,因此不能重载该函数。该方法(因为它是一种方法)可以以不同的方式实现


例如,由于Cocoa中的某些类(例如集合)是类集群,因此它们可能重写
+alloc
以实现自定义行为。在使用函数时,您无法使用此功能。

这里有一个说明:


基本上,类createInstance是为Cocoa实现者提供的,并为他们提供对流程的低级访问。API用户应该使用alloc,它可能使用class_createInstance或类似的东西。

基本上,您不应该使用
class_createInstance()
,除非您对自己正在做的事情有足够的了解,可以自己回答这个问题


调用
class\u createInstance()
会绕过在
+alloc
中实现的任何特殊情况。如果您尝试使用
NSString
,您将得到一个
NSString
实例,而不是私有占位符类的实例,它是您想要发送的任何
-init…
消息的正确目标。

+1特别是对于“除非您…可以自己回答此问题”是的,同时也感谢这里的其他注释,还有freenode上的macdev irc,我已经开始学习类集群,我相信你正在逃避它。。。非常有趣的东西。。。
class_createInstance(clazz,0);