2009-07-31 29 views
1
NSURLResponse *response =[[NSURLResponse alloc] initWithURL:requestingURL 
                MIMEType:@"text/xml" 
             expectedContentLength:-1 
              textEncodingName:nil]; 

webData = [NSURLConnection sendSynchronousRequest:theRequest 
           returningResponse:response 
              error:NULL]; 

我得到的編譯器警告說,來自不兼容的指針類型的警告通過參數。我懷疑這是因爲NSURLResponse參數是一個雙星參數,(NSURLResponse **)?Objective-C方法中的雙星參數?

我在這裏做錯了什麼?

回答

8

迴應是返回給你參考。

NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *data = [NSURLConnection sendSynchronousRequest: request 
           returningResponse: &response 
           error: &error]; 

這是調用它的正確方法,並通過引用取回響應和錯誤。

在上面的代碼中,除了語法錯誤之外,您正在泄漏響應對象。

+0

很好的答案。請注意,如果您不關心處理它,那麼爲error:參數傳遞`NULL`是完全合法的,但通常通過引用來獲取它是一種很好的做法。此外,在傳遞它們之前,您不必將`response`和`error`設置爲nil,因爲該方法無論如何都會覆蓋這些值。 (可能有些方法不適用,但是IMO的方式不好,至少它能做的就是根據需要爲你提供參數。) – 2009-07-31 02:36:21