【发布时间】:2010-08-22 16:17:52
【问题描述】:
我正在使用 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,但不幸的是,这个问题似乎从未解决过。
更新:删除自动释放的邮件字符串时(根据 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
【问题讨论】:
标签: iphone objective-c memory-management