在Objective-C中,工厂方法和方便初始化器的区别是什么?



每个对象都有默认的初始化方法-init

如果你需要用属性实例化你的对象,你可以这样写
-initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2

可以这样调用:
[[SomeClass alloc]initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2]

我一直认为这被称为工厂方法(这是正确的吗?)

但后来我偶然发现了这个问题:如何编写一个方便的Objective-C构造函数

它看起来像一个"方便的构造函数"是一样的工厂方法?但也许一个方便的构造函数专门使用类方法作为初始化项?所以一个方便的构造函数看起来应该是这样的:
+someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2和将被称为:
[SomeClass someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2];

有人知道术语应该是什么吗?在这种情况下,"工厂方法"one_answers"方便构造函数"这两个术语是相同的吗?

"方便构造器"曾经是苹果公司用来描述这个概念的官方术语;然后他们开始称其为"工厂方法"。它的性质没有改变:它是一个创建实例的方法。initWith...不是一个工厂方法。

"便利性初始化器"是Swift的术语,而不是ObjC。

"指定初始化器"是不相关的,除非这个创建方法,像任何其他*一样,最终必须调用它。


*除initWithCoder:

最新更新