在Objective-C中,我们可以使用不同的初始化程序,这些初始化程序执行不同的操作并且没有参数。
- (instancetype) initForSomethingSpecific;
- (instancetype) initWithDefaultSettings;
所以你可以把它们称为
[[MyClass alloc] initForSomethingSpecific];
[[MyClass alloc] initWithDefaultSettings];
这些类型的初始化程序在Swift中被翻译为
init(forSomethingSpecific: ())
init(defaultSettings: ())
因此可以将它们称为
MyClass(forSomethingSpecific: ())
MyClass(defaultSettings: ())
但这看起来并非 swifty 。
在Swift-only环境中有没有正确的方法?工厂方法是首选吗?
谢谢。
答案 0 :(得分:2)
事实上,这似乎没有办法用swift来做到这一点。
我个人的理解/意见是Swift中init方法的目的是创建一个具有默认特征的对象,或者使用在初始化程序中传递给它的信息。如果你在初始化器中为某些特定配置实例化一个对象,那实际上是一个放置在初始化器中的工厂,而不是真正的初始化器本身。