2013-06-21 2 views
0

나는 IMP와 관련된 정보를 찾고있다. 그러나 내가 찾은 모든 것은 오래된 연습처럼 보인다.은 IMP이고 @ 선택기는 관련이 있습니까?

내가 틀릴 수도 있지만 IMP는 필요한 경우 인수로 전달할 수 있도록 메서드의 주소를 나타냅니다. 맞습니까? 이것이 사실이라면 @selector가 이것을 허용하지 않습니까?

내가 정말로 잃어 버렸기 때문에 누군가 나에게 설명 할 수 있으면 감사하겠다. IMP와 @selector를 사용하는 것에 대한 정보가 있으면 좋을 것입니다.

답변

1

@selectorIMP을 조회하는 데 사용할 수있는 SEL으로 해결됩니다. 당신이 추측했듯이, IMP은 함수의 구현을 가리키고, 그렇지 않으면 함수 포인터라고합니다. 객관적인 C이 [NSObject alloc]처럼 보이는 무엇

은 C에서 다음과 같습니다

objc_msgSend(objc_getClass("NSObject"),sel_getUid("alloc")) 

내부적으로 objc_msgSend가 제공 ClassSEL을하고 IMP가 호출 얻을 class_getMethodImplementation 같은 것을 사용합니다.

일반적으로 Method과 같은 상위 인터페이스를 사용하고 NSSelectorFromStringNSClassFromString과 같은 기능을 사용하여 런타임을 처리하는 것이 좋습니다.