2012-09-12 48 views
0

當我在設備上運行應用程序時,NSURLRequest委託方法沒有被調用。儘管它在模擬器上完美工作。另外它不是我的視圖在請求被滿足之前加載的情況,因爲我只能在連接收到數據後才能查看加載。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); 
} 
+1

備註 - 閱讀文檔,如果您重寫'viewWillAppear:'方法,則必須在實現中的某個時刻調用super。你沒有這樣做。 – robertvojta

回答

2

這裏提供您的代碼是沒有意義的:

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

那林e返回一個指向NSURLConnection對象的指針,你的變量名稱會引起誤解。如果你想在這一點上阻塞(甚至可以工作),那麼看起來你需要在那一點使用sendSynchronousRequest。

我做了類似於你想要做的事情,但採用更傳統的方式。在viewDidLoad中,甚至在initWithFrame中,我將啓動一個異步連接,設置一個標誌,並將視圖backgroundColor設置爲黑色或白色(我通常也使用微調器)。當我得到viewWillAppear,如果連接已經完成,一切都很好,我設置了各種UI元素。如果沒有,那麼不要做任何事情,並且以後,當連接完成時,拉下微調器並更新UI。

我想到的阻止主線程的唯一方法就是嘗試使用該同步請求(對於這種情況,這是一種非常糟糕的方式)。

在後臺做事情的美妙之處在於,如果它的時間太長,用戶可以點擊後退按鈕或去別的地方的應用[在這種情況下取​​消了連接和拆除都記錄下來。]

1

檢查URL在瀏覽器中選中當u提供NSMutableURLRequest給出什麼

enter image description here

NSMutableURLRequest需要有效的URL

+0

哦,很抱歉,但實際上的網址。這意味着它不是我寫在那裏的URL。自從它的一個內部帳戶以來,不想公開該URL:但它工作正常 – CodeGeek123

相關問題