24
JRSwizzle과 MethodSwizzle을 모두 시도했습니다. 그들은 잘 시뮬레이터에 컴파일하지만 장치 (3.x)에 대한 컴파일하려고하면 무리를 던져메서드 Swizzle on iPhone 장치
아무도 아이폰에 swizzling 운이 있었나요? 그 트릭은 뭐니?
TIA
JRSwizzle과 MethodSwizzle을 모두 시도했습니다. 그들은 잘 시뮬레이터에 컴파일하지만 장치 (3.x)에 대한 컴파일하려고하면 무리를 던져메서드 Swizzle on iPhone 장치
아무도 아이폰에 swizzling 운이 있었나요? 그 트릭은 뭐니?
TIA
CocoaDev 위키는 방법 스위 즐링 here에 대한 광범위한 토론이있다. 나는 매우 위험한 프로세스로 방법 스위 즐링 간주하고 아직 그것을 사용할 필요가 없었 간단하기 때문에,이 테스트를하지 않은
#import <objc/runtime.h>
#import <objc/message.h>
//....
void Swizzle(Class c, SEL orig, SEL new)
{
Method origMethod = class_getInstanceMethod(c, orig);
Method newMethod = class_getInstanceMethod(c, new);
if(class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)))
class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
else
method_exchangeImplementations(origMethod, newMethod);
}
: 마이크 애쉬는 해당 페이지의 하단에있는 비교적 간단한 구현을 가지고있다.
감사합니다. 그들은 이것을 사용하는 열쇠는 #import #import –
dizy
위키 링크가 작동하지 않음 – funkybro
@funkybro - 지적 해 주셔서 감사합니다. 나는 그것이 삭제되기 전에, 페이지의 보관 된 버전을 파 냈다. 위키가 다시 나타나면 보관 링크를 교체하겠습니다. –