2017-03-16 2 views
0

클래스에 대해 두 개의 범주 (c1 및 c2)가 있는데 둘 다 동일한 방법을 사용합니다 - (void) 을 실행하면 응답자가 항상 c2 범주가되는 이유는 무엇입니까? ? 나는 그들이 같은 우선 순위를 가져야한다고 생각한다.두 범주 사이의 우선 순위

+0

우선 순위는 무엇을 의미합니까? 두 방법 모두 실행될 것으로 기대하십니까? – Losiowaty

답변

1

클래스 범주의 메서드는 발견 된 순서대로 클래스에 추가됩니다. 기존의 메소드와 같은 이름 (셀렉터)을 가지는 메소드는, 새롭게 발견 된 메소드의 이름으로 이전의 구현을 옮겨 놓을뿐입니다.

처리 할 범주의 순서에 대한 보장이 없으므로 절대로 의존해서는 안됩니다.

0

최종 클래스에는 의 실행이라는 실현이 하나만 있습니다. 이 이름을 가진 정확한 실현은 컴파일러에 달려 있습니다. 다른 실현에는 다른 이름이 있습니다. 당신은 런타임에 메소드를 보면서 의미를 깨뜨릴 수 있습니다.