カスタム UITableViewHeaderFooterView クラスとカスタム UITableViewCell クラスがあります。これら 2 つのクラスは、いくつかのメソッドと変数を共有しています。あれこれ対処するよりも、共有メソッドや変数のスーパークラスを作ったほうがいいと思います。しかし、これら 2 つのカスタム クラスには、既に異なるスーパークラスがあります。
これを行うためのベストプラクティスは何ですか?
カスタム UITableViewHeaderFooterView クラスとカスタム UITableViewCell クラスがあります。これら 2 つのクラスは、いくつかのメソッドと変数を共有しています。あれこれ対処するよりも、共有メソッドや変数のスーパークラスを作ったほうがいいと思います。しかし、これら 2 つのカスタム クラスには、既に異なるスーパークラスがあります。
これを行うためのベストプラクティスは何ですか?
ここで必要なのは、Objective C では (直接) サポートされていない多重継承です。
プロトコルは、多重継承 (MI) の欠如にある程度対処します。技術的には、プロトコルは、純粋に「抽象」クラスの MI と同等です (以下の「プロトコル」に関する回答を参照)。
他に使用できるオプションが 3 つあります。
メッセージ転送 (特に転送と多重継承) ( http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html )
どのクラスが実際にそれらを使用しているかをチェックして UIView にカテゴリを追加できますが、実際には状態に対処しません。これらの状態はおそらくデリゲートにあるはずです。
プロトコルを作成することもできますが、どちらも実装する必要があります。
それを超えて、彼らが同じデリゲートを共有できると想像できます。