我正在使用openURL发送带有一些链接的电子邮件。该函数如下所示:
//
+ (void) sendEmail:(NSString *) subject withBody:(NSString *)body {
NSString *mailString = [NSString stringWithFormat:@"mailto:?@&subject=%@&body=%@",
[subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],
[body stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]];
[mailString autorelease];
}
调用此函数的代码如下所示:
[AppNameAppDelegate sendEmail:subjectLine withBody:bodyText];
无论subjectLine和bodyText是什么,我都会收到这样的错误:
Program received signal: “EXC_BAD_ACCESS”.
电子邮件实际上弹出,所以我知道它正在通过openURL。但到那时我想程序已崩溃,因此当你退出电子邮件窗格时它没有恢复。
关于为什么会发生这种情况的任何想法?
问题看起来像this,但该答案不适用。它看起来更像this forum post,但不幸的是,这个问题看起来从未解决过。
更新:删除自动释放的mailString时(根据StackOverflow ticket mentioned above中的说明),它不会改善这种情况。
//
+ (void) sendEmail:(NSString *) subject withBody:(NSString *)body {
NSString *mailString = [NSString stringWithFormat:@"mailto:?@&subject=%@&body=%@",
[subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],
[body stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]];
}
设置malloc_error_break断点似乎没有做任何事情。输出仍然如下:
AppName(1424,0x3e9097c8) malloc: *** error for object 0x16fdf0: double free
*** set a breakpoint in malloc_error_break to debug
答案 0 :(得分:3)
NSString *mailString = [NSString stringWithFormat:...
已经返回自动释放的字符串 - 您不得向其发送任何自动释放消息
答案 1 :(得分:1)
使用NSZombieEnabled进行调试,如this answer中所述。