0

必要ないくつかの関数で UIVIewController クラスを拡張しました。

同じ関数を UITableViewController クラスに追加したい、つまり、そのクラスも拡張したい。

そのためには、拡張された viewController クラスのすべてのメソッドを、tableViewController クラスの拡張に使用される新しいファイルのペアに複製する必要があります。私の無知で申し訳ありませんが、その冗長性なしで両方のクラスを拡張する方法はありますか? つまり、viewController および tableViewController 拡張ファイルによって継承できる汎用拡張クラス (?) を 1 つだけ持つということですか? これが混乱している場合は申し訳ありません。私が言いたいのは、これの代わりに:

UIViewController+extensions.h
UIViewController+extensions.m

UIViewController クラスの多くの拡張メソッドを含み、

UITableViewController+extensions.h
UITableViewController+extensions.m

どちらも UITableViewController クラスの拡張メソッドを多数含んでいます。

これ欲しい:

GenericExtension.h
GenericExtension.m

これには、拡張メソッドが含まれています

それから、

UIViewController+extension と UITableViewController+extension はどちらも GenericExtension を継承しているため、拡張メソッドのコピーは 1 つだけです。

それは可能ですか?

4

2 に答える 2

4

継承を使用せずにカテゴリを使用する場合UIViewController(ファイルの名前付けが示すように)、これらのメソッドはでも使用できますUITableViewControllerUITableViewController必ずサブクラスにヘッダーファイルをインポートしてください。

于 2012-10-17T19:33:34.503 に答える
0

オプション1:

すべてのメソッドを(GenericExtension.h / .m)に記述し、タイプUIViewControllerにします。

後で中UIViewController

@interface RootViewController : Generic Extensions

から派生しているUITableViewControllerので、同じことを行うことができます。UITableViewControllerUIViewController

于 2012-10-17T19:34:14.160 に答える