# ObjectiveC : Afficher NSString* grace à un NSLog



## Anonyme (17 Mars 2011)

Bonsoir, 
je viens de commencer à apprendre l'objective c, mais j'ai un petit problème. j'ai un objet de type Personne, qui contient une methode identiteSimple comme celle ci : 

-(NSString*) identiteSimple
{
    NSString *res = [[NSString alloc] initWithString: prenom];
    res = [res stringByAppendingString" "];
    res = [res stringByAppendingString:nom];
    return res;
}

Dans mon fichier main, j'appelle cette méthode sur un objet déjà créer et avec les paramètres nom et prenom deja initialisés comme ceci : 

NSLog(@"%@", [moi identiteSimple]);

Cependant, xcode m'informe que "Format string is not a string literal (potentially insecure)" et lorsque je lance la compilation, la console retourne 

2011-03-17 19:27:17.894 objc[13127:903] (null)

et nom le résultat attendu, : prenom nom. 
Est-ce que quelqu'un sait ou est mon erreur ?
merci d'avance .


----------



## Rez2a (17 Mars 2011)

Il n'y a pas de soucis au niveau de la syntaxe en tout cas.

Est-ce que tu peux transformer ta méthode - (NSString *)identiteSimple comme ceci ?

- (NSString *)identiteSimple
{
NSLog(@"%@ %@", prenom, nom);
NSString *res = [[NSString alloc] initWithString: prenom];
res = [res stringByAppendingString" "];
res = [res stringByAppendingString:nom];
return res;
}

Est-ce que la méthode -(NSString*)identiteSimple est déclarée dans le header de la classe de ton objet moi ?
Le warning vient peut-être de là.

Au pire envoie direct les header et implémentation de la classe de moi 

[Edit]
Peut-être plus important, tu les initialises comment les variables nom et prenom de ton objet ?
Tu fais juste un nom = @"blabla" ou nom = [[NSString alloc] initWithString"blabla"] ?
Parce que dans le premier cas, ça revient à faire un autorelease sur nom... tu en es peut-être pas encore là, mais ça pourrait produire une libération de la variable sans que tu le veuilles et ça expliquerait qu'elle soit à null.


----------



## tatouille (18 Mars 2011)

```
@implementation GolmonUser

@synthesize firstName, lastName, ...;

...

- (NSString *)description
{
    NSString *userdesc = nil;
    NSString * firstname  = [self firstName];
    NSString * lastname  = [self lastName];
    if (username && lastname) {
        userdesc = [NSString stringWithFormat:@"%@ %@",firstname, lastname];
    }
    else
    {
        //@throw I am a retarded
    }
    return userdesc;
}

...

@end

...

NSLog(@"%@", [theUserPtr description]);
```


c'est quoi ce code qui pue du cul plein de fuite de memoire..... et qui ne comprend meme pas l'idee de cocoa et de la prog objet?


----------



## Anonyme (19 Mars 2011)

@tatouille, merci pour les insultes...
en fait c'était un problem d'allocation de mémoire. plus d'infos ici.


----------



## tatouille (20 Mars 2011)

ou est l'insulte ou les? 

je decris seulement la realité de ce que je lis, l'auteur ne m'interresse peu ou pas, c'est somme toute la meme situation que quand je vois un gros caca sur le trottoir: je _questionne_ et m'insurge peut etre que le responsable aura honte premiere etape d'un semblant de conscience de soi. 

De plus quand on en est a poster sur stackoverflow parce que l'on ne maitrise pas les bases simples du language (que l'on peut acquerir facilement en lisant l'introduction d'Apple a l'obj-C ou tout ceci est abordé tres clairement mais pas la maitrise d'un debugger c'est vrai, ou la notion de travaille personnel), on evite de la ramener :rateau:, le post ici ou ailleur  est strictement sans interet  comme l'auteur.


----------

