Vous n'êtes pas identifié.

#51 20-07-2010 15:31:05

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

J4ai honte des tutos que l'on faisait au début...

l'init est mauvais, il faut celui là

- (id)parseXMLAtURL:(NSURL *)url
           toObject:(NSString *)aClassName
            parseError:(NSError **)error
{
if (self = [super init])
{
    [items release];
    items = [[NSMutableArray alloc] init];
    className = aClassName;
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [parser setDelegate:self];
    [parser parse];
     
    if([parser parserError] && error) {
        *error = [parser parserError];
    }
    [parser release];
}
    return self;
}

+

Hors ligne

 

#52 20-07-2010 15:42:55

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Merci beaucoup de ton aide, je ne pense pas que j'aurais pensé à ça.

Par contre ma seconde erreur persiste, celle ci :

http://www.ipup.fr/forum/userimages/Capture-d-ecran-2010-07-20-a-15.19.20.png



Une idée ?


MAJ :

Voici le code de mon parser :

http://www.ipup.fr/forum/userimages/Capture-d-ecran-2010-07-20-a-17.49.46.png



Je ne comprends vraiment pas ce qui plante hmm

Dernière modification par Dvins (20-07-2010 17:50:30)

Hors ligne

 

#53 20-07-2010 19:12:13

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

Tu veux pas essayer de release à la main url après avoir fini ton parsage ?


Au fait, sélectionne ton code, puis clic droit puis re indent selection

+

Hors ligne

 

#54 20-07-2010 19:48:47

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Si j'essaye de releaser "url", ça plante (sans message dans la console) !
J'avoue que je suis assez perdu là...

(le code est bien indenté)

Hors ligne

 

#55 20-07-2010 19:49:44

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

Euh oui, mais tu as bien enlever l'autorelease juste avant ??

Pour l'indentation du code, tu as des marges de taré !

Hors ligne

 

#56 20-07-2010 19:54:02

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Bon bin merci beaucoup, c'est l'url qui foirait.

Par contre, j'aimerais essayer de comprendre (oui j'ai relu la fiche mémoire plusieurs fois mais tu as le droit de me dire de la lire une fois de plus au besoin big_smile) : pourquoi l'autorelease n'était pas intelligent dans ce cas là ?

(pour les marges, c'est parce que j'ai fait un screenshot de Instruments qui n'était pas en plein écran !)

Hors ligne

 

#57 20-07-2010 19:57:45

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Ah et non, en fait ça me laisse la leak au même endroit hmm

D'autres idées ?

Hors ligne

 

#58 20-07-2010 19:57:46

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

1/ relis la fiche mémoire
2/ relis la fiche mémoire
3/ relis la fiche mémoire
4/ relis la fiche mémoire

tongue

Nan je rigole c'est pas forcément dit. Le problème de l'autorelease, c'est que tu places ton objet dans un bassin. A un instant t, quant ton processus a plus rien à faire, tac il libère. Donc là, c'est très surement un concours de circonstances où ton objet est libéré avant ou pendant le parsage donc ça merde.

Règle d'or : L'autorelease tu n'utiliseras que quand vraiment besoin tu auras...
Quand tu peux, évites l'autorelease, au moins tu sais ce que tu fais. C'est plus contraignant, mais tellement plus clair tongue

+

EDIT : ah merde. Pas de chance. Bon, dans leaks, quand tu as la pile des méthodes, tu en as a toi à un moment sur la fuite (avec une icône de tête de bonhomme ?)

Hors ligne

 

#59 20-07-2010 20:00:30

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Pour plus de clarté, voici mon code actuel :

ViewController.m

    NSString *monUrl=[NSString stringWithFormat:@"http://www.monurlamoi.com/data.xml"];
    NSURL *url=[[NSURL alloc] initWithString:monUrl];
    
    myParser = [[XMLToObjectParser alloc] parseXMLAtURL:url toObject:@"NouveauMembre" parseError:nil];
    
    [url release];

XMLToObjectParser.m

- (id)parseXMLAtURL:(NSURL *)url
           toObject:(NSString *)aClassName
         parseError:(NSError **)error
{
    if (self = [super init]) {
        [items release];
        items = [[NSMutableArray alloc] init];
        className = aClassName;
        NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
        [parser setDelegate:self];
        [parser parse];
        
        [className release];
        [currentNodeName release];
        [currentNodeContent release];
        [item release];
        
        if([parser parserError] && error) {
            *error = [parser parserError];
        }
        [parser release];
    }
    return self;
}

Photo de la leak :

VOIR PLUS HAUT big_smile

EDIT : Oui j'en ai une sur la fonction dans le screenshot + haut...

Merci d'avance pour votre aide dans mon apprentissage wink

Dernière modification par Dvins (20-07-2010 20:01:22)

Hors ligne

 

#60 20-07-2010 20:04:22

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

bon stringWithFormat est inutile au passage

myParser, il est release quelque part ?

EDIT
nan je parle pas de ça. Quand tu as la pile des méthodes appelées pour retrouver la fuite, tu as des icônes à côté...

Hors ligne

 

#61 20-07-2010 20:05:20

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Oui, myParser est déclaré dans le .h, puis @property, puis @synthetize, puis release dans le dealloc !

Hors ligne

 

#62 20-07-2010 20:05:41

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

Et tu n'appeles qu'une seule fois parseXML ?

Hors ligne

 

#63 20-07-2010 20:07:11

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Voilà ce que j'ai :

http://www.ipup.fr/forum/userimages/Capture-d-ecran-2010-07-20-a-20.05.50.png



Quand je clique sur la plus haute, ça envoie sur le screenshot que j'ai fait plus haut.

Oui je l'appelle seulement une fois ! (sauf si je clique sur "refresh", mais j'en suis pas encore là)

Hors ligne

 

#64 20-07-2010 20:09:34

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

Pfou bizarre ton truc. Bon écoute, je laisse passer la nuit dessus car je sèche

+

Hors ligne

 

#65 20-07-2010 20:11:17

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Bah merci d'avoir essayé ^^

(j'espère que je vais réussir à trouver ou que quelqu'un pourra m'aiguiller big_smile)

Hors ligne

 

#66 20-07-2010 22:16:58

ipodishima
Administrateur
Date d'inscription: 12-02-2009
Messages: 4931

Re: Exercice Fiche mémoire

Tu peux essayer

NSString *monUrl=[[NSString alloc] initWithString:@"http://www.monurlamoi.com/data.xml"];
NSURL *url=[[NSURL alloc] initWithString:monUrl];
 
myParser = [[XMLToObjectParser alloc] parseXMLAtURL:url toObject:@"NouveauMembre" parseError:nil];
 
[url release];
[monURL release];

Hors ligne

 

#67 20-07-2010 23:12:56

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Toujours pareil sad

Je ne vois pas mon erreur... As-tu besoin de plus de code pour une vision plus globale ?

Hors ligne

 

#68 21-07-2010 09:34:49

DricABrac
Modérateur
Date d'inscription: 11-05-2009
Messages: 1356
Site web

Re: Exercice Fiche mémoire

Salut !

Pour info, moi j'ai toujours eu des soucis avec les parsers !! Des fuites qui sortent de je ne sais où et rien à faire pour les corriger !!!
En gros, c'est pas gagné !! wink

Hors ligne

 

#69 21-07-2010 09:35:26

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

Est-ce qu'à votre avis, ça nécessite un AutoreleasePool ?
Si oui, l'implémentation doit se faire à quel niveau selon vous ?

Hors ligne

 

#70 21-07-2010 11:39:55

Dvins
iPuP confirmé
Date d'inscription: 08-07-2010
Messages: 215

Re: Exercice Fiche mémoire

@DricABrac : ouais c'est ce que je lis sur le net mais bon moi je suis un peu perfectionniste sur les bords et surtout, j'apprends.
Et quand j'apprends, ça me frustre d'avoir un truc où je dois me dire "ça je comprendrais pas", j'aime bien essayer de fouiller un peu les choses !
Mais bon là j'avoue que je pige rien big_smile

Hors ligne

 

#71 21-07-2010 12:16:26

kazou
Modérateur
Lieu: Paris
Date d'inscription: 11-12-2009
Messages: 1552

Re: Exercice Fiche mémoire

a quand un parser sans fuite Ipo ?!!


aider son prochain fait partie des principes de base dans une société, et je considère le net comme une société

Hors ligne

 

#72 17-08-2010 15:59:28

Gaetan56
iPuP apprenti
Date d'inscription: 01-04-2010
Messages: 58

Re: Exercice Fiche mémoire

J'ai eu le même problème que toi, voici la solution smilehttp://stackoverflow.com/questions/2298 … arser-code

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr


Copyright © 2009 - ipup.fr • création de Jérémy Lagrue • design de Loann Fraillon • contact