0

カスタム UITableViewHeaderFooterView クラスとカスタム UITableViewCell クラスがあります。これら 2 つのクラスは、いくつかのメソッドと変数を共有しています。あれこれ対処するよりも、共有メソッドや変数のスーパークラスを作ったほうがいいと思います。しかし、これら 2 つのカスタム クラスには、既に異なるスーパークラスがあります。

これを行うためのベストプラクティスは何ですか?

4

2 に答える 2

0

ここで必要なのは、Objective C では (直接) サポートされていない多重継承です。

プロトコルは、多重継承 (MI) の欠如にある程度対処します。技術的には、プロトコルは、純粋に「抽象」クラスの MI と同等です (以下の「プロトコル」に関する回答を参照)。

他に使用できるオプションが 3 つあります。

プロトコル ( http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html )

構成 ( http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html%23//apple_ref/doc/uid/TP40002974-CH6-SW15 )

メッセージ転送 (特に転送と多重継承) ( http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html )

于 2013-06-10T04:30:31.197 に答える
0

どのクラスが実際にそれらを使用しているかをチェックして UIView にカテゴリを追加できますが、実際には状態に対処しません。これらの状態はおそらくデリゲートにあるはずです。

プロトコルを作成することもできますが、どちらも実装する必要があります。

それを超えて、彼らが同じデリゲートを共有できると想像できます。

于 2013-06-10T00:28:16.247 に答える