簡體   English   中英

NSURLRequest委托未在Device上被調用在模擬器上工作正常。

[英]NSURLRequest delegates not getting called on Device Works fine on simulator.

我在設備上運行應用程序時未調用NSURLRequest委托方法。 盡管它在模擬器上完美運行。 同樣,在請求完成之前加載視圖的情況也不是這樣,因為只有在連接接收到數據后,我才允許加載視圖。

我的代碼請求url在這里。 任何幫助,不勝感激。

- (void)viewWillAppear:(BOOL)animated
{ 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://-dev01x/content"]; cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
    [request setHTTPMethod:@"GET"];
    _getData = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    NSLog(@"HELLO %@",_getData);
}

您在此處提供的代碼沒有任何意義:

_getData = [[NSURLConnection alloc] initWithRequest:request delegate:self];

該行返回一個指向NSURLConnection對象的指針,您的變量名具有誤導性。 如果您想在這一點上進行阻止(甚至可以正常工作),那么您似乎需要在這一點上使用sendSynchronousRequest。

我所做的事情與您想做的事情類似,但是采用了更為傳統的方式。 在viewDidLoad甚至initWithFrame中,我將啟動一個異步連接,設置一個標志,然后將viewbackgroundColor設置為黑色或白色(我通常也使用微調器)。 當我獲得viewWillAppear時,如果連接完成,則一切順利,並設置了各種UI元素。 如果不是,則什么也不做,以后,當連接完成時,拉動微調器並更新UI。

我可以想到的唯一方法是,在您試圖阻塞主線程的地方,就是使用該同步請求(IMHO是處理此問題的一種非常糟糕的方法)。

在后台執行操作的好處是,如果操作花費的時間太長,則用戶可以點擊“后退”按鈕或進入應用程序中的其他位置(在這種情況下,您將取消連接並斷開所有連接。)

在瀏覽器中未提供任何內容時,檢查提供給NSMutableURLRequest的URL

在此處輸入圖片說明

NSMutableURLRequest需要有效的網址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM