2012-06-15 54 views
1

我試圖從API中檢索JSON文件進行解析。我正在使用NSURLConnection來獲取數據。它的代表收到回覆並確認MIME類型爲application/json。然而,當代表調用此方法:將數據從NSURLConnection附加到NSMutableData對象失敗

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    NSLog(@"Received route data"); 
    [self.receivedData appendData:data]; 
    NSLog(@"Data length: %d", data.length); 
    NSLog(@"Data length in property: %d", self.receivedData.length); 
} 

它記錄的data長度爲某個整數。但是,它將receivedData的長度記錄爲0.如果有數據被附加到它,這顯然是錯誤的。

receivedData屬於NSMutableData類型,當包含它的對象被初始化時,我使用self.receivedData = [[NSMutableData alloc] init]。我在附加數據時犯了錯誤嗎?

+0

儘管你說你已經初始化了'self.receivedData',這聽起來很像你的'connection:didReceiveData:'方法中的'nil' - 你檢查過是否是這種情況? – Mac

+0

@Mac我檢查了'self.receivedData',它確實是'nil'。看來我誤將屬性設置爲「弱」,並且只要初始化它的方法完成並且本地指針超出了範圍,它就會被釋放。 –

+0

這確實會這樣做。很高興你把它整理出來。順便說一句,既然你看起來很新(順便說一句),你可能不知道我們鼓勵那些已經解決了自己問題的人發佈答案 - 對於遇到同樣問題的其他人來說,這可能非常有用。儘管我很樂意獲得功勞,但你自己找到了根本原因,所以如果你能夠在答案中發佈詳細信息,那將是非常好的。 – Mac

回答

0

顯然,我忘記了將self.receivedData設置爲strong。因此,只要初始化該方法的方法超出範圍並導致它在其他地方返回nil,它就會被釋放。

相關問題