2016-12-17 8 views
1

私は、セッターを介して明示的に依存性オブジェクトを渡す必要がない方法があるかどうか疑問に思っていました。すなわちセッターの依存関係:イニシャライザによる依存関係の注入(ストーリーボードを使用) [Swift]

var store: Store! 

は、これは何とかVCの初期化子(instantiateViewControllerWithIdentifier)、絵コンテとのすなわち初期化子の注射を介して行うことができますか? ありがとう

答えて

0

あなたはviewControllerを設定する余分なクラスを導入することができます。

class MyViewControllerConfigurator { 

    static func configure(viewController: MyViewController) { 

     let someDependency = SomeDependency() 

     viewController.someDependency = someDependency 

     // force trigger lazy initialization of view (and subviews), which would be nil otherwize in awaikFromNib 
     _ = viewController.view 

     // do further configuration here (add child view controller, set delegates ...) 
    } 
} 

MyViewControllerでの使用:

class MyViewController: UIViewController { 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     MyViewControllerConfigurator.configure(viewController: self) 
    } 
} 

あなたのViewControllerは、ストーリーボードを使用してインスタンス化しても設定されますこの方法です。

+0

あなたの考えを共有してくれてありがとう。私は実際にシングルトンについて完全に忘れていました。しばらく使っていないのです。しかし、独身責任原理に違反するので、シングルトンは一般的に悪いデザインではありませんか? –

+0

私はシングルトンが神のものであることを避けることに同意します。なぜなら、その理由は「単一責任の原則」ではありませんが、それは別の話題です。これはただ1つの実装例でした。私は答えを更新しました。 – shallowThought

+0

@shallowThoughtこれは依存性注入の例ではありません。依存関係を手動で設定していて、依存関係をターゲットに渡していません。 – Gunhan

関連する問題