每个对象都有默认的初始化方法-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: