2012-02-18 1 views
3

objective-c 2.0으로 메소드 호출을 가로 채기위한 간단하고 저렴한 안정적인 솔루션을 찾고 있습니다. 사전/사후 블록을 실행하고 중간에 원래의 메소드를 실행하는 것이 가능해야합니다.objective-c를 사용하는 AOP와 유사한 구조

나는 방법을 바꿀 수 있다는 것을 알고있다. IMP를 원래의 방법을 호출하고 사전/사후 블록을 exec 할 수있는 것으로 대체하라. 이것은 단순 해 보이고, 꽤 빠르며, 표준적인 경우에 작동해야합니다. 이 문제에 대해 더 나은 런타임 마술 방식이 있다면 어떤 생각이 드나요?

PS 휴대 성은 중요하지 않습니다. OS X 및 iOS의 사과 런타임에서만 실행됩니다.

AspectOrientedObjectiveC

내가 그것을 사용한 적이 그래서 나는 그것이 얼마나 신뢰할 모른다 :

+0

실제 문제가 아니라 제안 된 해결책을 언급했습니다. 어떤 문제를 해결하려고합니까? – jlehr

+1

기존 문제에 대한 사전/사후 코드를 추가하는 일반적인 경우를 해결하는 방법에 대해 더 자세히 다루지는 않습니다. 나는 이것을 자주 사용하여 인수, ret-vals, 인스턴스 추적, 무언가 등을 기록한다. 나는 이것을 수행하는 가장 좋은 방법이 무엇인지 잘 모르겠다. – hburde

+0

일반적인 대안은'objc_msgSend' 함수를 후킹하는 것입니다. 연결 예는 [여기] (http://code.google.com/p/networkpx/source/browse/etc/objc_msgSend_hook.mm?r=472)입니다. __builtin_ *은 (는) clang에서 사용할 수 없으므로 여기에서 수정을해야합니다. –

답변

0

오브젝티브 C에 대한 접근 방식을 지향 측면이있다.

관련 문제