class_addProtocol
에 대한 documentation은 매우 기본적이고 실제로 사용법을 설명하지 않습니다.class-addProtocol은 Objective-C에서 실제로 무엇을합니까?
필자가 생각하기에 런타임에 클래스에 프로토콜을 추가하려면 class_addMethod
을 호출하여 프로토콜의 각 메서드를 추가 한 다음 class_addProtocol
을 호출해야합니다. 내가 이해할 수없는 것은 인 경우 및 이유class_addProtocol
으로 전화해야합니다. 모든 프로토콜 방법을 추가하면 클래스가 이미 프로토콜을 준수하므로 실제로 class_addProtocol
은 무엇을합니까?
필자는 항상'conformsToProtocol'이 프로토콜의 모든 필수 메소드에 대한'respondsToSelector'의 논리적 AND와 동일하다고 가정합니다. 그러나 클래스가 실제로 수행하는지 또는 프로토콜에 관계없이 프로토콜을 채택하는지 선언하는지 여부를 반환합니다. 아니. 이 점을 이해하도록 도와 주셔서 감사합니다. – jhabbott
@jhabbott : 필요한 메소드를 정의하지 않는 프로토콜을 생각해보십시오. 클래스가 클래스를 준수한다고 선언 된 경우 클래스가 준수하는지 여부를 "논리 AND"방식으로 어떻게 결정할 수 있습니까? –
@JonathanGrynspan 제로 인수 AND는 '참'입니다. 그러나이 행동에 대한 또 다른 이유가 있습니다. 두 클래스가 같은 이바라를 가지고 있다면, 오리 타잉과는 달리 여전히 동일하지 않습니다. 원리는 여기에서도 마찬가지입니다. –