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);