クラスに機能を追加するためにカテゴリを使用しています。ただし、呼び出された場合に特定のカテゴリメソッドを呼び出すメインクラスの共通メソッドを共有したいと思います。
2 つのカテゴリがあると仮定すると、より適切に説明できます。
@interface MyClass(CategoryA)
-(void)specificCategoryA;
@end
@interface MyClass(CategoryB)
-(void)specificCategoryB;
@end
次に、メインクラスで次のようにしたいと思います。
@implementation MyClass
-(void)utilityMethod {
// choose one of the two...
// -(void)specificCategoryB;
// -(void)specificCategoryA;
}
@end
カテゴリを内省できないという意味で、上記のことはできないことを知っているので、別の方法を探しています。私が取り組んでいるアプリでは、コンパイル時にこれを解決しても問題ありませんが、どんな提案も受け付けています。また、一般的なメソッド名をオーバーライドしようとしましたが、明らかに警告が表示されます
カテゴリは、そのプライマリ クラスによっても実装されるメソッドを実装しています
これは物事がうまくいかないという意味ではありませんが、カテゴリを継承として使用したくありません。