gpt4 book ai didi

objective-c - 工厂方法和构造器的区别

转载 作者:可可西里 更新时间:2023-11-01 00:59:12 24 4
gpt4 key购买 nike

目前正在学习 Objective 和 Swift。我了解 Obj C 中的初始化器和便利初始化器,并且我了解工厂方法。我也听说过“构造函数”这个词,但我不确定它们与工厂方法或初始化程序有何不同。 “构造函数”只是另一种引用初始化程序的方式吗?谢谢

最佳答案

没有区别。

很长一段时间以来,创建实例对象的类方法被称为便利分配器或——很少——构造器。术语便利分配器经常被使用,当一个实例对象被自动释放时,这对 ARC 来说变得不重要了。

NSString *string1 = [NSString string]; // autoreleased
NSString *string2 = [NSSString new]; // ownership transfer

基本上它们是 +alloc-init… 的组合,加上 - 当它是一个方便的分配器时 - -autorelease。两(?)年前左右开始称它们为因子方法。

但是,忘了名字吧。想一想它们的作用以及它们存在的原因:使用经典的 +alloc--init ... 组合,类没有机会决定要创建什么子类型,因为这取决于关于 -init 的参数。让我们举个例子:NSSArray 有两个(私有(private))子类 _NSSmallArray_NSBigArray。它想从您在 -initWithEstimatedSize: 方法中作为容量给出的估计大小中选择子类型。 +alloc 如何决定选择和分配哪个子类型?它不知道您将向 init 方法传递什么参数。

使用构造函数或便利分配器,可以参数化对象分配。 +newArrayWithEstimatedSize:+arrayWithEstimatedSize: 可以解决这个问题。

嗯,现在你必须调用它们工厂方法。对不起。故事是一样的。

关于objective-c - 工厂方法和构造器的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com