je me suis soudain avoir une catégorie pour le NSURLConnection et j'utiliser des objets associés pour étendre la classe de conserver une référence à une classe personnalisée de mes afin que je puisse obtenir plus tard dans un autre contexte quand délégué et transmettre l'appel à la cible réelle plus tard. De cette façon, je peux modifier les données souhaitées dans certains points d'exécution.objc_getAssociatedObject commence à renvoyer nul
Mais pour une raison quand tout fonctionnait normalement, objc_getAssociatedObject retourne nil, ce qui signifie que je ne récupère pas mon objet associé et que tout le processus s'arrête.
Mon code:
static void* KEY_CONNECTION_MYCLASS;
static MyClass* GetConnectionMyClass(NSURLConnection* connection)
{
return (MyClass*)
objc_getAssociatedObject(connection, KEY_CONNECTION_MYCLASS);
}
static void AttachConnectionMyClass(NSURLConnection* connection, MyClass* myClass)
{
objc_setAssociatedObject(connection,
&KEY_CONNECTION_MYCLASS,
myClass,
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
Et comment j'accéder aux fonctions ci-dessus des autres fonctions statiques.
Quand je tournerai l'objet associé:
NSURLConnection* connection = (NSURLConnection*) self;
AttachConnectionMyClass(connection, myClass);
Obtenez l'objet associé:
NSURLConnection* connection = (NSURLConnection*)self;
MyClass* myClass = GetConnectionMyClass(connection);
if (myClass)
{
NSLog(@"MyClass is NOT NIL");
}
else
{
NSLog(@"MyClass is NIL");
}
Le résultat est toujours "MyClass est NUL". Comme je l'ai mentionné, cela fonctionnait correctement et s'est arrêté sans aucune raison qui me vient à l'esprit.
Qu'en pensez-vous?
Bon sang! Je n'ai même pas remarqué, ça a dû arriver quand j'ai refaçonné quelque chose. Merci pour la réponse rapide. –