ばかげた質問に聞こえるかもしれませんが、それでもそうするのが怖いです。NSObject メソッド、つまり addObserver: を Category でオーバーライドしたいからです。システムで実行されている他のアプリに影響はありますか?
3 に答える
オーバーライドaddObserver:forKeyPath:option:contex
は良い考えではありません。カテゴリの実装からメソッドの実装を呼び出すことはできませんsuper
。これは基本的に、オブザーバーが追加されないことを意味します。
これはアプリにのみ影響しますが、グローバル レベルで影響します。つまり、UIKit や Fundation などの外部フレームワークも影響を受けます。
現在、Objective-C 言語では、カテゴリを使用して、クラスが継承するメソッドをオーバーライドしたり、クラス インターフェイスで宣言されたメソッドをオーバーライドしたりすることができますが、そうしないことを強くお勧めします。カテゴリはサブクラスの代わりではありません。
質問についてシステムで実行されている他のアプリに影響はありますか?
答えは大したことではありません。影響を受けるのはアプリのみです。
カテゴリは、既存のクラスに新しいメソッドを追加するための準備を提供しますが。また、既存のメソッドをオーバーライドすることもできますが、ほとんどの場合、どのメソッドが呼び出されるかを制御できなくなる可能性があります!!!
また、メソッドをオーバーライドしても、フレームワークのメソッドが使用され、メソッドが考慮されないことがあります。
したがって、同じメソッド名を使用してオーバーライドしないことをお勧めします。を区別するために as を使用できます。
addObserverCustom: