2017-03-16 13 views
0

クラスの2つのカテゴリ(c1とc2)があり、どちらも同じメソッドです - (void)run このメソッドにメッセージを送信すると、レスポンダは常にc2カテゴリになります? 私は彼らに同じ優先順位があるべきだと思います。2つのカテゴリの間の優先度

+0

優先度はどういう意味ですか?両方の方法が実行されると思いますか? – Losiowaty

答えて

1

クラスカテゴリのメソッドは、見つかった順にクラスに追加されます。既存のメソッドと同じ名前(セレクタ)を持つメソッドは、以前の実装を新しく見つかったメソッドのものに置き換えるだけです。

カテゴリは処理される順序が保証されていないので、決してそれに依存することはありません。

0

最終クラスは、の実行の実現を1つのみ持っています。この名前の正確な実現にはコンパイラによって異なります。他の実現には別の名前がつきます。実行時にメソッドを見れば、意味が分からないことがあります。