J'utilise openURL pour envoyer un email avec quelques liens. La fonction ressemble à ceci:Qu'en est-il de ce mailto: openURL peut être à l'origine de ce crash de malloc?
//
+ (void) sendEmail:(NSString *) subject withBody:(NSString *)body {
NSString *mailString = [NSString stringWithFormat:@"mailto:[email protected]&subject=%@&body=%@",
[subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],
[body stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]];
[mailString autorelease];
}
Le code qui appelle cette fonction ressemble à ceci:
[AppNameAppDelegate sendEmail: subjectline withBody: bodyText];
Peu importe ce que le subjectline et bodyText, je reçois une erreur comme ceci:
Program received signal: “EXC_BAD_ACCESS”.
L'email pops réellement, alors je sais que ça en fait par cette openURL. Mais d'ici là, je suppose que le programme a planté et donc il n'est pas restauré lorsque vous quittez le volet e-mail.
Des idées sur pourquoi cela se passe-t-il?
question ressemble à this mais cette réponse est non applicable. Il ressemble plus à this forum post mais malheureusement ce problème semble qu'il n'a jamais été résolu. MISE À JOUR: Lors de la suppression de la chaîne mailSaut automatique (conformément aux instructions du StackOverflow ticket mentioned above), la situation ne s'améliore pas.
//
+ (void) sendEmail:(NSString *) subject withBody:(NSString *)body {
NSString *mailString = [NSString stringWithFormat:@"mailto:[email protected]&subject=%@&body=%@",
[subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],
[body stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]];
}
La définition d'un point d'arrêt malloc_error_break ne semble pas faire quoi que ce soit. La sortie ressemble encore ceci:
AppName(1424,0x3e9097c8) malloc: *** error for object 0x16fdf0: double free
*** set a breakpoint in malloc_error_break to debug
Merci pour votre réponse. Malheureusement, j'avais essayé cela et cela ne semble pas résoudre mon problème. Pls voir la question mise à jour pour la sortie. – buley
Quel système ciblez-vous? J'ai fait un échantillon - le code sans autorelease supplémentaire semble fonctionner correctement sur iPhoneOS 3.1 ... Peut-être essayer de nettoyer et de reconstruire votre projet? Ou votre vrai problème peut ne pas être dans cette fonction mais ailleurs. – Vladimir
Je cible la version 4.0. Malheureusement, je suppose que le problème est plus profond que je ne peux espérer trouver une réponse. – buley