Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中创建不带参数的多个不同初始值设定项_Swift - Fatal编程技术网

如何在Swift中创建不带参数的多个不同初始值设定项

如何在Swift中创建不带参数的多个不同初始值设定项,swift,Swift,在Objective-C中,我们可以有不同的初始值设定项,它们做不同的事情,不接受任何参数 - (instancetype) initForSomethingSpecific; - (instancetype) initWithDefaultSettings; 所以你可以称他们为 [[MyClass alloc] initForSomethingSpecific]; [[MyClass alloc] initWithDefaultSettings]; 这些类型的初始值设定项在Swift中被翻

在Objective-C中,我们可以有不同的初始值设定项,它们做不同的事情,不接受任何参数

- (instancetype) initForSomethingSpecific;
- (instancetype) initWithDefaultSettings;
所以你可以称他们为

[[MyClass alloc] initForSomethingSpecific];
[[MyClass alloc] initWithDefaultSettings];
这些类型的初始值设定项在Swift中被翻译为

init(forSomethingSpecific: ())
init(defaultSettings: ())
因此,它们可以称为

MyClass(forSomethingSpecific: ())
MyClass(defaultSettings: ())
但这看起来不是很快

在只有Swift的环境中,是否有正确的方法来实现这一点?工厂方法优先吗


谢谢。

事实上,斯威夫特似乎没有办法做到这一点


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

通常使用工厂方法,是的。在Objective-C中看起来也很奇怪。所有旧的Cocoa Objective-C init都被转换为Swift类工厂。也许值得在你的答案中加以说明。。。