두 오브젝트를 작성하고 두 오브젝트에서 같은 메소드를 실행하면 동일한 오브젝트 유형의 다른 인스턴스화에 대한 두 메소드의 포인터가 같은.오브젝트의 다른 인스턴스가 메모리에있는 메소드에 대한 동일한 포인터를 공유합니까
예 :
NSObject *obj1 = [NSObject new];
NSObject *obj2 = [NSObject new];
[obj1 doSomething];
[obj2 doSomething];
이 doSomething
이러한 개체 모두에 대해 동일한 포인터입니다. 어떻게 증명할 수 있습니까? 그렇지 않습니다. 나는 그것이 있다고 들었다.
"메소드에 대한 포인터"는 Objective-C에서 매우 약한 것이지만, 객체의'Class'를 가져온 다음'class_getInstanceMethod'를 사용하여 메소드 포인터를 얻을 수 있습니다. 두 객체의 클래스가 동일하다면 메소드가 될 것입니다. –
일반적으로 이러한 작업을 수행하는 데는 약 5 가지 방법이 있습니다. 'methodForSelector'도 사용할 수 있습니다. –
Objective-C는 일반 서브 클래스 외에 서브 클래 싱없이 클래스에 새로운 기능을 추가하는 "카테고리"를 허용하기 때문에 "약하다". 또한 별도의 컴파일 복잡성으로 인해 실제로 주어진 클래스의 동일한 메소드 이름에 응용 프로그램의 다른 부분에서 두 가지 다른 메소드를 지정하는 것이 가능합니다. –