3

可能な限り最良の方法でコードをリファクタリングしようとしていますが、特定の状況に適したアーキテクチャが何であるか疑問に思っています。

私がやろうとしていること

私がやっていることは非常に単純ですCALayer。インタラクティブな UI 要素を表すカスタム サブクラスがいくつかあります。UI の一部の部分が静的であるため、それらは複数のレイヤーに分割されているため、これらの静的要素を不必要に再描画したくありませんでした。現在、レイヤはCustomView、 のサブクラスであるクラスの初期化部分にサブレイヤとして追加されていますUIView

現在、サブクラスである対応するクラスはありません。これは、を使用しているときに、他のビューを含むジェネリックまたはジェネリックの一部に含まれているため、インスタンスごとに別のクラスが冗長になると感じたからです。CustomViewControllerUIViewControllerCustomViewUITableViewCellUIViewControllerUIViewControllerCustomView

また、クラス内で行っている唯一の操作は、UIViewタッチ イベントに応答し、タッチ情報をサブレイヤーに送信して、それに応じて UI の外観を更新できることです。drawRectメソッドなどをオーバーライドしているわけではありません。

質問

基本的に、次のいずれかを行うべきかどうかを判断しようとしています。

オプション1:

クラスを取り除き、のサブクラスであるクラスをCustomView作成し、オブジェクトをの組み込みプロパティのサブレイヤとして追加するだけです。CustomViewControllerUIViewControllerCALayerCustomViewControllerview

また

オプション 2:

サブクラスが冗長であるという私の考えUIViewControllerは正しいので、そのままにして、オブジェクトを内部にCustomView持つクラスを作成する必要があります。CALayer

これに関するアドバイスをいただければ幸いです。

4

1 に答える 1

0

MVCに関して、あなたが説明しているコード(オプション#2)はよく書かれており、責任の非常に明確な境界を維持していると思います。このクラスでは、ビュー レイヤー自体とは関係のないコードを記述していません。これは素晴らしいことです。この場合、UIViewControllerこれらのインスタンスを管理するための別のサブクラスは必要ないと思います。なぜなら、あなたが言ったように、それらは独自のタッチイベントと可視レイヤーを処理しているためです(まさに彼らの責任です)。

何らかの理由で、データ関連のロジックやその他の計算を必要とするより複雑なものが必要な場合は、a をサブクラス化するUIViewControllerか、まったく別の方法で問題を調べることを検討します。

あなたが提示した状況を考えると、このサブクラス ('CustomView')CALayer内でインスタンスを維持することが正しい方法だと思います。UIView

于 2013-07-06T17:27:41.903 に答える