【发布时间】:2015-09-21 17:43:07
【问题描述】:
所以每个对象都有默认的初始化方法-init
如果您需要使用属性实例化您的对象,您可以编写类似-initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2
这将被称为:[[SomeClass alloc]initWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2]
我一直以为这叫工厂方法(对吗?)
但后来我偶然发现了这个 SO 问题: How to write an Objective-C convenience constructor
在哪里看起来“便利构造函数”与工厂方法是一样的?但也许便利构造函数专门使用类方法作为初始化器?所以看起来便利的构造函数看起来像这样:+someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2 并被称为:[SomeClass someClassWithProperty1:(Property1*)prop1 andProperty2:(Property2*)prop2];
有人知道术语实际上应该是什么吗?在这种情况下,“工厂方法”和“便利构造器”这两个术语是否相同?
【问题讨论】:
-
我将
initWithProperty方法称为“便利初始化器”,将someClassWithProperty方法称为“工厂方法”。但这只是基于常识。我不记得在 Apple 文档中看到过这两个术语。 -
是的,我在文档中找不到任何具体的内容。许多来源的信息相互矛盾——这就是为什么我想说这些术语是可以互换的
-
是的,这就是英语的工作方式。只要其他人同意你的定义,一个词就可以表示任何你想要的意思:)
-
哈哈好吧,当我提交更改时,我不确定在提交消息中放入哪个术语。我想与其他人的定义保持一致。此外,如果我阅读其中一个或另一个,我想确保我确切地知道他们在说什么
标签: objective-c constructor initialization factory