Im actuellement en train d'essayer d'utiliser du code généré de http://sudzc.com/ Ce code n'est pas parfaitement adapté à mes services Web, j'ai donc essayé d'ajouter des catégories à certains des générés classes et d'échanger leurs implémentations avec celles d'origine en utilisant method_exchangeImplementations de "objc/runtime.h". (Je pourrais modifier le code généré directement mais je veux l'éviter).class_getClassMethod renvoie souvent nil (semble fonctionner uniquement avec les méthodes de niveau classe)
Voici le code que je surExécuterdans MyAppAppDelegate - Méthode applicationDidFinishLaunching
Class theClass = [CBMayaIPhoneUser class];
Method originalMethod = class_getClassMethod(theClass, @selector(initWithNode:));
Method categoryMethod = class_getClassMethod(theClass, @selector(initWithAllStringNode:));
method_exchangeImplementations(originalMethod, categoryMethod);
theClass = [Soap class];
originalMethod = class_getClassMethod(theClass, @selector(getNodeValue:withName:));
categoryMethod = class_getClassMethod(theClass, @selector(getHrefNodeValue:withName:));
method_exchangeImplementations(originalMethod, categoryMethod);
theClass = [SoapRequest class];
originalMethod = class_getClassMethod(theClass, @selector(send));
categoryMethod = class_getClassMethod(theClass, @selector(sendIgnoringCertificate));
method_exchangeImplementations(originalMethod, categoryMethod);
originalMethod = class_getClassMethod(theClass, @selector(connectionDidFinishLoading:));
categoryMethod = class_getClassMethod(theClass, @selector(connectionDidFinishLoadingAndSentBody:));
method_exchangeImplementations(originalMethod, categoryMethod);
Comme indiqué dans ma question, presque tous ces class_getClassMethod reviennent nul ... J'ai utilisé le débogueur donc je sais « theClass » est correctement défini. La seule méthode trouvée est celle de la classe Soap, qui sont toutes deux des méthodes de niveau classe (+). Mais à partir de divers exemples sur le net, je conclus qu'il devrait travailler pour les autres et ...
Voici ma comprend pour MyAppAppDelegate.m:
#import "MyAppAppDelegate.h"
#import "RootViewController.h"
#import "MyGlobalVariables.h"
#import "MyWebServiceExample.h"
#import "Soap+Href.h"
#import "SoapRequest+Certificate.h"
#import "CBMayaIPhoneUser+AllString.h"
#import "objc/runtime.h"
J'ai testé aussi mes catégories et ils travaillent, Je peux appeler les méthodes de catégorie à partir d'un objet 'originalClass'.
Je suppose que je fais quelque chose de mal, mais je ne vois pas quoi ... Ou peut-être class_getClassMethod est en effet censé fonctionner uniquement pour les méthodes de niveau classe?
Ho et dernière chose, Im développer sur le simulateur, pas l'appareil :)
Toute pensée est la bienvenue!
Merci
PB