如何在Swift

时间:2016-04-04 22:04:40

标签: swift

在Objective-C中,我们可以使用不同的初始化程序,这些初始化程序执行不同的操作并且没有参数。

- (instancetype) initForSomethingSpecific;
- (instancetype) initWithDefaultSettings;

所以你可以把它们称为

[[MyClass alloc] initForSomethingSpecific];
[[MyClass alloc] initWithDefaultSettings];

这些类型的初始化程序在Swift中被翻译为

init(forSomethingSpecific: ())
init(defaultSettings: ())

因此可以将它们称为

MyClass(forSomethingSpecific: ())
MyClass(defaultSettings: ())

但这看起来并非 swifty

在Swift-only环境中有没有正确的方法?工厂方法是首选吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

事实上,这似乎没有办法用swift来做到这一点。

我个人的理解/意见是Swift中init方法的目的是创建一个具有默认特征的对象,或者使用在初始化程序中传递给它的信息。如果你在初始化器中为某些特定配置实例化一个对象,那实际上是一个放置在初始化器中的工厂,而不是真正的初始化器本身。