2

ビュー コントロール階層に iOS 5 ストーリーボードを使用しています。これに関する問題は、ビュー コントローラーに挿入する必要があるビジネス ロジックを処理する共有コントローラー クラスがいくつかあることです。これらのコントローラーは初期化され、アプリ デリゲートに保持されます。

たとえば、一部のビュー コントローラーで使用している Dropbox インタラクションをカプセル化したコントローラーがあります。それぞれに参照を渡すこともできますprepareForSegue:sender:が、これにより、View Controller 階層全体がコントローラーに依存するようになります。また、シングルトン パターンを使用することもできますが、あまり好きではありません。

コントローラーを疎結合にしたい場合、どのようなオプションがありますか? 異議申し立てについて聞いたことがあります。調査しますが、どんな意見でも大歓迎です

4

1 に答える 1

0

これが少し遅れていることはわかっていますが、他の人に役立つことを願っています.

プロトコルを使用してこの問題を解決し、注入されるオブジェクトを確認すると、特定のセレクターに応答します。

このprepareForSegueメソッドでは、次の 2 つのいずれかを行います。

id object = segue.destinationController;
if([object conformsToProtocol:@protocol(HasApplicationManager) ]){
    [(id<HasApplicationManager>)object setApplicationManager:_applicationManager];
}
if([object respondsToSelector:@selector(setViewDelegate:)]){
    [object performSelector:@selector(setViewDelegate:)withObject:self];
}

最初のビットは、宛先コントローラーが指定されたプロトコルに準拠しているかどうかを確認します。これは、構成パターンを使用してアプリケーションを構築するため、まだ疎結合です。

次に、セレクターをチェックします。これはプロトコルよりも非公式であり、おそらくより結合されており、より多くの問題を引き起こします。しかし、これは何百もの 'IHave...' プロトコルを回避する方法です。

于 2013-01-02T00:48:07.467 に答える