런타임 메시지 전달 메커니즘의 핵심 함수 void objc_msgSend(id self,SEL cmd,...)에 따라 메시지를 보내려면 먼저 현재 클래스에서 호출 메서드를 찾고, 찾을 수 없으면 다음에서 계속 호출하세요. 해당 상위 클래스를 계층별로 살펴보면, 카테고리에 대해 동일한 메소드를 다시 작성하면 메시지 전달 과정에서 해당 카테고리의 메소드를 먼저 찾아 실행하게 됩니다. 여러 카테고리가 동일한 메소드를 호출하기 위해 Xcode는 런타임 시 buildPhases->Compile Sources에서 위에서 아래 순서에 따라 컴파일됩니다. 후입선출 방식에 따라 컴파일 중에 여러 카테고리가 스택에 푸시됩니다. 원칙적으로 사후 컴파일된 메서드가 먼저 호출됩니다. objc_msgSend가 메서드를 찾아 호출하면 더 이상 메시지를 전송하지 않으므로 소위 재정의가 형성됩니다. 반드시 나중에 생성된 것이 호출된다는 의미는 아닙니다. 생성 후 buildPhases->Compile Sources의 위치에 따라 달라집니다.
런타임 메시지 전달 메커니즘의 핵심 함수 void objc_msgSend(id self,SEL cmd,...)에 따라 메시지를 보내려면 먼저 현재 클래스에서 호출 메서드를 찾고, 찾을 수 없으면 다음에서 계속 호출하세요. 해당 상위 클래스를 계층별로 살펴보면, 카테고리에 대해 동일한 메소드를 다시 작성하면 메시지 전달 과정에서 해당 카테고리의 메소드를 먼저 찾아 실행하게 됩니다. 여러 카테고리가 동일한 메소드를 호출하기 위해 Xcode는 런타임 시 buildPhases->Compile Sources에서 위에서 아래 순서에 따라 컴파일됩니다. 후입선출 방식에 따라 컴파일 중에 여러 카테고리가 스택에 푸시됩니다. 원칙적으로 사후 컴파일된 메서드가 먼저 호출됩니다. objc_msgSend가 메서드를 찾아 호출하면 더 이상 메시지를 전송하지 않으므로 소위 재정의가 형성됩니다. 반드시 나중에 생성된 것이 호출된다는 의미는 아닙니다. 생성 후 buildPhases->Compile Sources의 위치에 따라 달라집니다.
런타임 로딩 분류 방법 순서에 따라 재정의
일반적으로 마지막 분류 로딩 방법을 구현합니다