2012-06-15 2 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으로 기록됩니다. 데이터가 추가되면 분명히 잘못됩니다.

receivedDataNSMutableData이며, 해당 개체를 포함하는 개체를 초기화 할 때 self.receivedData = [[NSMutableData alloc] init]을 사용합니다. 데이터를 추가 할 때 실수 한 점이 있습니까?

+0

당신이'self.receivedData'를 초기화했다하더라도 이것은'connection : didReceiveData :'메소드에서'nil'과 매우 비슷하게 들립니다. – Mac

+0

@Mac'self.receivedData'를 검사했는데 실제로는'nil'이었습니다. 실수로 속성을 'weak'로 설정 한 것으로 보입니다. 초기화 된 메서드가 끝나고 로컬 포인터가 범위를 벗어날 때마다 해제되고있는 것으로 보입니다. –

+0

실제로 그렇게 할 것입니다. 다행 이군. 덧붙여 말하자면, 당신이 새로운 환영을받는 것처럼 보이기 때문에, 당신은 자신의 문제를 해결 한 사람들이 답을 게시하도록 격려한다는 것을 알지 못할 수도 있습니다. 이것은 같은 문제에 부딪 치는 다른 사람들에게 유용 할 수 있습니다. 신용을 얻을 수 있기를 원하는만큼, 근본 원인을 스스로 발견 했으므로 답변에 세부 정보를 게시 할 수 있다면 좋을 것입니다. – Mac

답변

0

분명히 self.receivedDatastrong으로 설정하는 것을 잊어 버렸습니다. 따라서 초기화 된 메서드가 범위를 벗어나서 다른 곳의 nil을 반환 할 때마다이 메서드가 릴리스되었습니다.

관련 문제