因此每个对象都有默认的初始化方法-init
如果你需要用属性实例化你的对象,你会写一些像
的东西
-initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2
这将被称为这样:
[[SomeClass alloc]initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2]
我一直以为这叫做工厂方法(这是正确的吗?)
但后来我偶然发现了这个问题: How to write an Objective-C convenience constructor
看起来像“便利构造函数”和工厂方法一样吗?但也许一个便利构造函数专门使用类方法作为初始化器?所以它似乎是一个便利构造函数看起来像这样:
+someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2
并且会被称为:
[SomeClass someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2];
有人知道术语究竟应该是什么吗?在这种情况下,“工厂方法”和“便利构造函数”这两个术语是否相同?
答案 0 :(得分:3)
“便利构造函数”曾经是Apple用于此概念的官方术语;然后他们开始称它为"factory method"。它的性质没有改变:它是a class method that creates an instance。 initWith...
不是工厂方法。
“便利性初始化程序”是来自Swift的术语,而不是ObjC。
“指定初始化程序”是不相关的,除非这种创建方法与任何其他*一样,最终必须调用它。
* initWithCoder: