Проблема с совместным использованием строк через AppDelegate-Class - PullRequest
0 голосов
/ 02 сентября 2010

Я делюсь своей строкой с классом AppDelegate:

SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate setShareText:xmlString]; 

И получить строку обратно из класса AppDelegate:

 SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate];
 NSString *xmlString = [mainDelegate getShareText];

Без проблем, если я использую:

xmlString = @"<rsp><photos><photo url='xyz.jpg' thumb='xyz.jpg' /></photos></rsp>";

Но приложение вылетает, когда я использую (xmlString получает содержимое URL-адреса правильно, проблема заключается в сохранении строки из AppDelegate-Class, когда xmlString заполненContentFromURL):

xmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:url]];

Кто-нибудь знает решение? Спасибо за помощь!

1 Ответ

1 голос
/ 02 сентября 2010

stringWithContentsOfURL: возвращает автоматически освобожденную строку. Таким образом, когда пул автоматического выпуска очищается (обычно, когда он завершает обработку текущего события), ваша строка освобождается. Затем вы пытаетесь получить к нему доступ, и boom.

Я подозреваю, что ваш делегат не управляет жизненным циклом xmlString. Вы, вероятно, хотите, чтобы setShareText: сохранил или скопировал строку. Будьте осторожны, чтобы освободить любую предыдущую строку.

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