Je souhaite convertir un NSString en un const char * afin d'accéder à une base de données sqlite.Crash de l'application iPhone lors de la conversion de NSString au format UTF8 char *
Cela fonctionne:
NSString *queryStatementNS = @"select title from article limit 10";
const char *queryStatement = [queryStatementNS UTF8String];
Cela provoque un accident dans le simulateur (sans stacktrace):
NSString *queryStatementNS = [NSString stringWithFormat:@"select title from article limit %d", 10];
const char *queryStatement = [queryStatementNS UTF8String];
Quelqu'un peut-il me dire, quels sont les changements de méthode de stringWithFormat dans la chaîne pour faire la conversion à UTF8 (ou ASCII en utilisant cStringUsingEncoding: NSASCIIStringEncoding) crash? Le même crash se produit également lors de la transmission d'aucun argument au stringWithFormat. Pourrait-il être lié à la gestion de la mémoire en quelque sorte?
L'appel stringWithFormat est-il dans un endroit ou une méthode différent de la méthode UTF8String? Si c'est le cas, l'objet autorelease queryStatementNS dans le deuxième exemple aurait pu être libéré. Le premier exemple utilise une constante, qui n'est pas un objet autorelease. – hotpaw2
Tout était dans un seul endroit, tout comme dans l'exemple. Cependant, j'ai ajouté un [queryStatementNS retain]; entre ces lignes et maintenant cela fonctionne. – Sven