Прежде всего, голый со мной, потому что это мой первый вопрос, связанный с iOS для SO.Вызов NSURLConnection внутри dispatch_async и чтение didReceiveResponse в mainRunLoop в разработке iPhone
То, что я пытаюсь сделать, это получить ответ на следующий метод
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { }
после вызова этого
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[conn start];
внутри
dispatch_async();
Но метод connection
не звонит. Но когда я запускаю код NSURLConnection
за пределами dispatch_async
, он вызывает метод.
В чем причина этого и как его исправить? Это потому, что delegate
относится к self
, а self
относится к фоновому потоку, но не к классу UIViewController
?
Какой поток вы используете при вызове 'dispatch_async' и в каком потоке вы хотите его отправить? – Levi
, который отправляет очередь, вы используете в 'dispatch_async()'? –
Когда я вызываю 'NSURLConnection', я внутри' dispatch_async() '. Кстати, вызывая '[self performSelectorOnMainThread: @selector (myBgWork) withObject: Nil waitUntilDone: NO];' this и помещать код 'NSURLConnection' внутри' myBgWork', дает мне ответ для 'didReceiveResponse'. Но теперь я смущаюсь, потому что снова чувствую, что мои фоновые работы снова обращаются к основной теме, и это замедлит мое приложение. Это так? – AnujAroshA