2013-06-01 41 views
0

我創建了一個NSObject,它從php web服務下載一些數據。問題是,當我在模擬器中運行應用程序時效果不錯,但是在設備中不調用委託方法。我不知道爲什麼。我編寫了所有委託方法,但沒有一個被調用。這是NSObject代碼的一部分:NSURLConnection委託方法在模擬器中調用,但不在設備中

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:hostStr]]; 
NSLog(@"%@ URL Engine",hostStr); 
dispatch_async(dispatch_get_main_queue(), ^{ 
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 

     // while(!finished) { 
     // [[NSRunLoop currentRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate distantFuture]]; 
     //} 
     [_connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; 
     [_connection start]; 
    }); 
+0

的iOS版???? – Rajneesh071

+0

iOS:6.1.3 iPhone 4 – Alvaro354

+0

是'_connection'強大的iVar嗎? –

回答

0

這是棘手約呼叫d​​ispatch_async獲得主線程隊列連接運行。

[self performSelectorOnMainThread:@selector(startConnection) 
         withObject:Nil 
        waitUntilDone:NO]; 

如果您想讓您的代表被調用另一個線程上,搜索:

,如果你想讓你的代表被調用的主線程試試這個

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSRunLoop *currentRunLoop = [NSRunLoop currentRunLoop]; 
    [connection scheduleInRunLoop:currentRunLoop forMode:NSRunLoopCommonModes]; 
    [connection start]; 
    [currentRunLoop run]; 
}); 
相關問題