2009-10-28 4 views
24

J'ai essayé JRSwizzle et MethodSwizzle. Ils se compilent bien sur le simulateur mais jettent un tas d'erreurs quand j'essaie de compiler pour Device (3.x)Méthode Swizzle sur le périphérique iPhone

Quelqu'un a-t-il eu de la chance sur l'iPhone? C'est quoi le truc?

TIA

Répondre

54

Le wiki CocoaDev a une discussion approfondie sur la méthode swizzling here. Mike Ash a une mise en œuvre relativement simple au bas de cette page:

#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); 
} 

Je n'ai pas testé, simplement parce que je considère méthode swizzling comme un processus extrêmement dangereux et n'ont pas eu besoin d'utiliser encore.

+3

merci qui a fonctionné. Ils clé avec l'utilisation de ce était à #import #import dizy

+0

Lien Wiki pas worky – funkybro

+0

@funkybro - Merci de le signaler. J'ai sorti une version archivée de la page, avant qu'elle ne soit supprimée. Quand le wiki reviendra, je remplacerai le lien d'archive. –

Questions connexes