Как насчет этого mailto: openURL может вызывать этот сбой malloc? - PullRequest
0 голосов
/ 22 августа 2010

Я использую 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 но этот ответ не применим.Это больше похоже на это сообщение на форуме , но, к сожалению, эта проблема выглядит так, как будто она никогда не решалась.

ОБНОВЛЕНИЕ: при удалении автоматически выпущенной mailString (согласно инструкциям в тикете StackOverflow , упомянутых выше) это не улучшает ситуацию.

//
+ (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

Ответы [ 2 ]

3 голосов
/ 22 августа 2010
NSString *mailString = [NSString stringWithFormat:...

уже возвращает автоматически выпущенную строку - вы не должны отправлять ей сообщения автоматического выпуска

1 голос
/ 22 августа 2010

Используйте NSZombieEnabled для отладки, как я описал в этом ответе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...