NSURLConnection Сохранение переменной не работает - PullRequest
0 голосов
/ 19 марта 2011

Я делаю (асинхронный) запрос URL.

В функции делегата connectionDidFinishLoading Я присваиваю ответ сервера переменной экземпляра.

Я ждучерез несколько секунд после того, как я сделаю запрос, и я уверен, что получил ответ.

У меня есть кнопка, связанная с IBAction, которая выводит эту переменную в NSLog, но она ВСЕГДА равна нулю.

Понятия не имею, что происходит.Запускает ли url-запрос новый поток и какие-либо из сохраненных переменных, недоступны в главном потоке ... или почему я вообще никогда не вижу ни одной из своих сохраненных переменных.

Я могу правильноиспользовать полученные данные внутри connectionDidFinishLoading , но когда я присваиваю эти данные переменным экземпляра и пытаюсь получить доступ к ним вне функции, они всегда равны нулю.

TL; DR Как на земле я могусохранить ответы или URL-запрос для последующего использования!?!

Заранее спасибо.

1 Ответ

0 голосов
/ 19 марта 2011

Возможно, проблема в том, что вы не сохраняете память, поэтому она автоматически освобождается.Переменная экземпляра, которую вы присваиваете, это свойство с указанным «retain» или «copy»?Вы также можете вручную вызвать retain для самого объекта после его установки:

[myString retain];

Использование свойства - лучший способ управления, например .H:

@interface MyClass: Object    {
    NSString *myString;
}
@property (nonatomic, retain) NSString *myString;

в другом месте в.M:

@synthesize myString    
...
...
self.myString = ...

Это гарантирует, что строка не будет выпущена на вас, пока вы не захотите:

[myString release];
self.myString = NULL;
...