2016-11-09 7 views
0

제 질문을 확장하려면 2MB의 비디오 파일 URL을 포함하는 NSString이 있습니다. 나는 dataWithContentsOfURL을 사용하여 NSData의 형태로 저장합니다. 나는 중단 점을 추가하고 데이터의 크기를 체크 아웃했다. 그것은 지독한 높은 (12 MB 이상)이었고, 그냥 바이트를 가져 와서 그것에 수학을했습니다 (데이터/1024/1024).개체가 NSData에 저장되는 방법은 무엇입니까? 데이터 크기 (바이트)는 NSData로 저장하기 전과 동일합니까?

그런 다음 데이터를 UISaveVideoAtPathToSavedPhotosAlbum의 비디오 파일로 저장하고 attributesOfItemAtPath을 사용하여 해당 저장된 파일의 속성을 FileSize으로 가져 왔습니다. 올바르게 표시되고 있습니다 (2MB). 내가 알고 싶은 건, 객체가 어떻게 인코딩되는지입니다. URL을 데이터 파일로 변환 할 때 크기가 크게 바뀌는 이유는 무엇입니까?

+0

정확히 NSData 객체가 12MB인지 어떻게 결정 했습니까? – rmaddy

+0

중단 점을 추가하고 데이터 객체 위에 올려 놓습니다. 그것은 나를 준 :'' 방금 ​​크기를 가져갔습니다. –

+1

'NSData' 객체를 만들고 채우는 관련 코드로 질문을 업데이트하십시오. 그리고 데이터의 '길이'속성을 기록하십시오. 그 가치는 무엇입니까? – rmaddy

답변

1

제가 알고 싶은 것은 객체가 어떻게 인코딩되는지입니다. URL을 데이터 파일로 변환 할 때 크기가 크게 바뀌는 이유는 무엇입니까?

NSData는 어떠한 방식으로 한 번에 저장된 바이트 원료 바이트는 "인코딩"아니다. 구조에 약간의 오버 헤드가 있지만 이것은 작습니다.

2MB 파일을 읽는 데 2MB가 약간 걸리므로 메모리 사용량에 눈에 띄지 않을 정도로 오버 헤드가 작습니다. 이보다 훨씬 큰 파일을 읽을 수 있으며 파일 크기보다 큰 메모리 사용량 증가를 볼 수 없습니다.

메모리 사용량이 다른 이유로 인한 것입니다. 실수로 여러 개의 NSData 사본이 생성 되었습니까? 압축되지 않은 비디오를 실수로 압축 해제 한 것입니까? 당신은 그 원인을 찾아야 할 것입니다.