2016-04-04 2 views
1

Objective-Cでは、異なるものを行い、引数を取らなかった異なる初期化子を使用できます。Swiftでパラメータを取らない複数の異なるイニシャライザを作成する方法

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

だから、初期化子のこれらのタイプは

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

としてスウィフトに変換されます

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

ように、彼らは

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

として呼び出すことができ、それらを呼び出すことができますが、これは非常に見えませんswifty

スウィフト専用環境でこれを行う正しい方法はありますか?工場の方法が好まれますか?

ありがとうございます。

+2

通常、ファクトリメソッドが使用されます。 – jtbandes

+0

はObjective-Cでも奇妙に見えます。 – vikingosegundo

答えて

2

この事実の側面は、迅速にこれを行う方法ではないようです。

私の個人的な理解/意見は、スウィフトのinitメソッドの目的は、デフォルト特性を持つオブジェクトを作成すること、または初期化子で渡された情報を使用してオブジェクトを作成することです。イニシャライザで特定の設定のオブジェクトをインスタンス化している場合、それは実際にはイニシャライザに配置されたファクトリであり、実際のイニシャライザ自体ではありません。

+0

古いCocoa Objective-CのすべてがSwiftクラスのファクトリに変換されました。おそらくあなたの答えに説明する価値がある... – Grimxn

関連する問題