首先,裸露在我身邊,因爲這是我的第一個iOS相關問題。在dispatch_async中調用NSURLConnection,並在iPhone開發中讀取mainRunLoop中的didReceiveResponse
我所試圖做的是調用這個
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[conn start];
內
dispatch_async();
後得到的響應爲以下方法
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { }
但connection
方法不調用。但是當我在dispatch_async
之外運行NSURLConnection
代碼時,它會調用該方法。
這是什麼原因,我該如何糾正它? 是因爲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