-[NSWindow lastObject]: selector not recognized
ClicCool
Membre
Bonjour,
Mon soft plante épisodiquement (se bloque sans quitter) en me renvoyant le double message suivant:
Pourtant:
- nulle part je n'utilise la méthode lastObject sur une fenêtre.
- Les seules fois où j'utilise lastObject c'est sur des NSArray tous simples qui n'ont rien à voir avec l'interface graphique.
- quand j'utilise le debugger "pas à pas" l'erreur est renvoyée en dehors de toute méthode perso.
Très exactement APRES exécution de la méthode standard des connections asynchrones:
et avant toute autre méthode perso.
Plus précisemment là :
Le plus surprenant c'est que la seule circonstance clairement identifiée de ce bug est celle où l'URL cible de ma requete me renvoie, dans les data, un message de type
C'est à dire quand le serveur du site distant a planté ...
En plus de ça, j'ai beau éplucher les réponses et messages d'erreurs de ma requête ... Rien
Le NSData est valide et contient le message d'erreur MySQL du site distant que je pourrais tout à fait traiter (comme les autres erreurs de connection) plus tard si l'appli m'en laissait le temps ...
Je vois pas le rapport avec " -[NSWindow lastObject]: " ???
Une piste ? SVP ? Pliz :why?:
Mon soft plante épisodiquement (se bloque sans quitter) en me renvoyant le double message suivant:
2005-02-27 00:17:46.850 appliBuguee[879] *** -[NSWindow lastObject]: selector not recognized<br />2005-02-27 00:17:47.568 appliBuguee[879] *** -[NSWindow lastObject]: selector not recognized<br />
Pourtant:
- nulle part je n'utilise la méthode lastObject sur une fenêtre.
- Les seules fois où j'utilise lastObject c'est sur des NSArray tous simples qui n'ont rien à voir avec l'interface graphique.
- quand j'utilise le debugger "pas à pas" l'erreur est renvoyée en dehors de toute méthode perso.
Très exactement APRES exécution de la méthode standard des connections asynchrones:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
et avant toute autre méthode perso.
Plus précisemment là :
<-[NSURLConnection(NSURLConnectionInternal) _sendCallbacks]+504><br />0x90a0c9dc <+0488> addis r4,r31,4095<br />0x90a0c9e0 <+0492> lwz r4,25492(r4)<br />0x90a0c9e4 <+0496> mr r3,r27<br />==ICI CA PLANTE==> 0x90a0c9e8 <+0500> bl 0x90b16bbc <dyld_stub_objc_msgSend><br />0x90a0c9ec <+0504> beq+ cr4,0x90a0caa4 <-[NSURLConnection(NSURLConnectionInternal) _sendCallbacks]+688><br />
Le plus surprenant c'est que la seule circonstance clairement identifiée de ce bug est celle où l'URL cible de ma requete me renvoie, dans les data, un message de type
<br /><br /><b>Warning</b>: mysql_error(): supplied argument is not a valid MySQL-Link resource in <b>/Volumes/data.../...</b> on line <b>39</b><br />
C'est à dire quand le serveur du site distant a planté ...
En plus de ça, j'ai beau éplucher les réponses et messages d'erreurs de ma requête ... Rien
Le NSData est valide et contient le message d'erreur MySQL du site distant que je pourrais tout à fait traiter (comme les autres erreurs de connection) plus tard si l'appli m'en laissait le temps ...
Je vois pas le rapport avec " -[NSWindow lastObject]: " ???
Une piste ? SVP ? Pliz :why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu peux peut-être comparer l'adresse de ta fenetre principale et de celle qui envoie le message lastobject. Personellement, ca m'etonnerait que cela soit la même. Par contre, je ne vois pas le lien entre la fenêtre et la connection.
Bon courage ClicCool :(renaud):
Ben non je sais pas, je sais même pas si je peux savoir ??? :-\\
Je la trouve où l'adresse de la fenêtre renvoyant cette erreur ?
:why?:
Pour recuperer les exeptions, tu ouvres la fenêtre Breakpoints de XCode et tu en rajoute un que tu nommes [NSExeption raise]. Comme ca, tu pourras voir toutes les exeptions qui sont levées.
Merci pour le break point: "[NSExeption raise]" je l'ai mis en place pour l'avenir ...
Mais je peux attendre plusieurs jours avant que ça ne survienne .... et encore! jusque là c'est le matin que je me rend compte qu'il a planté dans la nuit et quand je relance l'appli tout roule ...
C'est le pb avec ces bugs non reproductibles ou alors reproductible (dans ce cas précis) en plantant le site ciblé !
A moins que je demande à l'admin du site ciblé par ma requète de planter son serveur juste pour mes test ? Mais ça m'étonnerai qu'il soit d'accord.
Quoi qu'il drôlement chouette cet admin
Le gentil Admin du site ciblé a planté quelques temps pour moi la principale page cible de mes requêtes. [size=12pt]Merci Ami[/size]
Et comme je m'y attendais mon appli plante chaque fois en fin de requête avec les même 2 lignes d'erreur:
Mais j'ai beau faire ça plante Toujours, que je lise la réponse, l'intercepte et la filtre et même si je ne fais STRICTEMENT RIEN dans la méthode:
ça plante en sortant de cette méthode quelque parts dans les limbes.
Quelqu'un saurait-il s'il y a un bug connu dans la classe NSURLConnection ?
J'ai vraiment l'impression que c'est là qu'est le pb
Mais quel rapport avec " -[NSWindow lastObject]: " ?
??? Comment puis-je contourner ça ???
:why?: :why?: :why?: :why?:
connection:didFailWithError:
ou
connection:didReceiveResponse:
avant ta méthode à toi.
J'ai en effet torturé ma NSURLConnection et disséqué ses méthodes sans résultat
Comme d'habitude c'était une çonnerie (je met la cédille pour être plus musical et poli)
En fait c'était (bien sur) mon code, mais comment se fait-il que j'ai pas pu localisé le pb plus rapidement ? :-\\
Faut dire que le message semblant incriminer une NSWindow m'a envoyé dans de mauvaises directions >:(
Merci fouf pour le coup du point d'arrêt sur exception
Un bête NSMutableArray devant recevoir des NSTextTabStop n'était pas initialisé en cas de réponse mal formatée (ou plutot formatée différemment qu'attendu)
Et, évidemment je demandais sur ce tableau non initialisé le lastObject.
Mais la question demeure du pourquoi ce message d'erreur [NSWidow lastObject] selector not recognize ?
Merci à tous
:fouf): :fouf):
Ah bah, c'est une bonne nouvelle.
De rien. C'est un binz a mettre dans TrukEAstuce.
Il s'agit peut-etre d'une erreur dans le debuggeur.
Qui a une idée ?
Erreur typique de débutant (oui, ClicCool, tu resteras éternellement jeune...)
Il s'agit bien sûr de l'envoi d'un message à un objet qui n'est plus en mémoire (dans 80 % des cas, il s'agit d'un objet autoreleasable dont on a oublié le retain...)
Lorsque l'objet est purgé, son bloc d'allocation est généralement réutilisé par un autre objet, d'où la confusion du runtime lorsque on tente d'utiliser cet objet qui est en fait devenu un autre !
.
Merci Bru, pourvue que ça dure (ma jeunesse, mon inocence et ma naà¯veté)
Ceci dit quelle coincidence quand même qu'un pointeur d'objet (NSArray) non alloué et non initialisé, coà¯ncide pil poil avec l'adresse d'un autre Objet (ici une NSWindow) et en plus toujours le même objet ???
P.S.: ça a été la pêche aujourd'hui ? ça a mordu ? t'as pris quoi ? ;D