コアクラスは、あなたのモデルの一部であるか、それが何らかの制御フローメカニズムである場合です。
モデルの一部であれば、View Controllerについては何も知らなくても、View Controllerはアクセスできます。この場合、View Controllerはある種のデリゲートプロトコルを実装し、Coreクラスの一部のコア機能の代理人として自分自身を割り当てることで、Coreクラスからの呼び出しパスを確立することができます。次に、コアは、プロトコルで定義されたメソッドを呼び出すことによって、そのデリゲートで事前定義された動作をトリガすることができます。例えば
、
あなたはfileReceived(という名前のメソッドでFileEventDelegateと呼ばれるプロトコルを定義した場合)。
次に、FileEventDelegateタイプのfileEventDelegateというメンバーをCoreクラスに追加します。
Coreクラスがファイルを受信するたびに、fileEventDelegate?.fileReceived()を呼び出すことができます。プロトコルを実装しているクラスのオブジェクトインスタンスが、デリゲートとして登録されているオブジェクトインスタンスはそこから処理します。
ユニットテストクラスもデリゲートであり、セグを実行する必要はありません。
デリゲートが設定されていなくてもCoreクラスが機能することさえあります。
UI側では、performSegueWithIdentifier(...)を呼び出すfileReceived()関数を定義して、VcMainクラスでFileEventDelegateプロトコルを実装できます。 viewLoaded()では、それ自身が、動作しているCoreクラスインスタンスのfileEventDelegateとして設定できます。
これは、それが所属するviewController内のすべてのモデルからビジュアルロジックを保持します。
CoreクラスがView Controllerを完全に分離している場合(つまり、View ControllerがCoreのインスタンスへのアクセス方法を知らない場合)、NSNotificationCenterを調べて通知を送信することができますあなたのビューコントローラーが非同期的にピックアップする宇宙。
「コア」はどのようにインスタンス化されていますか? –
コアはネットワーク通信クラスです。 vcAcceptanceと呼ばれる別のクラスでインスタンス化されました。ネットワークからコマンドを送信、分析、および受信します。 –