2012-07-11 27 views
0

我知道這是一個模糊的問題,但我想知道是否有其他人觀察到了這一點。這裏是我的調用NSURLConnection的NSURLConnection重新啓動應用程序後總是失敗

// Get data from server 
    NSString *host = @"www.hostname.com";    
    NSString *urlString = [NSString stringWithFormat:@"/theRestOfTheURL"]; 
    NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString]; 

    DLog(@"URL is %@", url); 

    // Create the NSMutableData to hold the received data. 
    // receivedData is an instance variable declared elsewhere. 
    receivedData_ = [[NSMutableData data] retain]; 

    NSURLRequest *theRequest=[NSURLRequest requestWithURL:url 
               cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:15.0]; 

    // create the connection with the request 
    // and start loading the data 
    self.powerPlantDataConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease]; 

    [url release]; 

當我第一次加載它工作正常的應用程序代碼,我可以重複調用它沒有任何問題。但是,如果我關閉了應用程序並重新打開該應用程序,則每次都會調用委託方法,請求超時錯誤消息。我有兩個不同的視圖控制器,我正在調用兩個不同的URL,並且每次在關閉並重新打開應用程序後都失敗。

任何人都可以想到爲什麼會發生這種情況?我不確定從哪裏開始尋找。可能是請求超時錯誤的原因是什麼?請求沒有問題,因爲它在第一次運行應用程序時起作用。


編輯補充說,它似乎我只有在我的設備上,而不是在模擬器上的這個問題。

回答

3

希望你分享了一些chrash日誌(尤其是像 [error localizedDescription]類方法明確的定義。)

正如你所說它會超時(你的要求)。而且由於您創建對象的方式太雜亂,因此您需要爲系統做更大的工作。尤其是在像你這樣的情況下,下載數據時我建議使用GCD,具有不同的接口和網址..

一個建議 您可以創建URL對象是這樣的:

NSURL *url = [NSURL urlWithString:[NSString stringWithFormat:@"http://%@/%@?key1=%@&key2=%@", yourDomain, targetFile, value1, value2]]; 
+0

謝謝。沒有崩潰日誌,因爲應用程序不會崩潰,只有NSURLConnection失敗。本地化的錯誤描述只是「請求超時」或類似的東西。我會按照您建議的方式創建我的網址方案,看看它是否有所作爲。 – Darren 2012-07-11 17:39:08

+0

可能它不會有所作爲,但它會使用更少的內存。嘗試GCD,如果您需要代碼和樣本,請再次填寫。 – ilhnctn 2012-07-11 22:10:15

相關問題