Objective c 工厂方法和施工人员之间的差异
目前学习目标明确,速度快。我了解Obj C中的初始化器和方便初始化器,我了解工厂方法。我也听说过“构造函数”这个术语,但我不确定它们与工厂方法或初始值设定项有何区别。“构造函数”只是引用初始化器的另一种方式吗?谢谢没有区别 长期以来,创建实例对象的类方法一直被称为方便分配器或(很少)构造函数。术语便利分配器经常被使用,当实例对象被自动删除时,什么对ARC变得不重要Objective c 工厂方法和施工人员之间的差异,objective-c,swift,constructor,initializer,factory-method,Objective C,Swift,Constructor,Initializer,Factory Method,目前学习目标明确,速度快。我了解Obj C中的初始化器和方便初始化器,我了解工厂方法。我也听说过“构造函数”这个术语,但我不确定它们与工厂方法或初始值设定项有何区别。“构造函数”只是引用初始化器的另一种方式吗?谢谢没有区别 长期以来,创建实例对象的类方法一直被称为方便分配器或(很少)构造函数。术语便利分配器经常被使用,当实例对象被自动删除时,什么对ARC变得不重要 NSString *string1 = [NSString string]; // autoreleased NSString *s
NSString *string1 = [NSString string]; // autoreleased
NSString *string2 = [NSSString new]; // ownership transfer
基本上,它们是+alloc
和-init…
加上的组合–当它是一个方便的分配器时–-autorelease
。大约两年前,他们开始称之为因子方法
但是,忘记名字吧。想想它们是做什么的以及它们存在的原因:使用经典的+alloc
--init…
组合,类没有机会决定要创建什么子类型,因为这取决于-init
的参数。让我们举个例子:NSSArray
有两个(私有)子类\u NSSmallArray
和\u NSBigArray
。它希望从您在-initWithEstimatedSize:
方法上作为容量给出的估计大小中选择子类型。+alloc
如何决定选择和分配哪个子类型?它不知道您将在init方法上传递什么参数
使用构造函数或方便的分配器,对象分配可以参数化+newArrayWithEstimatedSize:
或+arrayWithEstimatedSize:
可以解决该问题
呃,现在你要叫它们工厂方法。很抱歉故事是一样的。这被标记为[swift],不太清楚OP是否真的在寻找swift信息,但可能值得注意的是swift确实如此,swift中的“初始值设定项”涵盖了ObjC中使用“构造函数”的功能。它被标记为swift和Objective-C。因为swift中的概念是从Objective-C借来的,你可以用Objective-C来描述,剩下的就是最后三段提到的措辞。