2013-10-04 5 views
0

사용자가 장치 카메라를 사용하여 연속으로 여러 사진을 찍을 수있게 해주는 응용 프로그램을 작성하고 있습니다.NSData Array에 저장할 때 메모리 경고가 발생했습니다.

사진을 찍을 때마다 NSData 변수로 배열로 전송됩니다. 문제는 배열에 30 개의 그림이 생기면 메모리 경고가 생성되어 결국 응용 프로그램이 손상된다는 것입니다.

내가 그 뷰를 떠날 때 NSUserDefaults에 해당 배열을 저장하기 때문에 메모리 경고 및 충돌이 발생할 수도 있습니다.

200 장의 사진과 같은 정보를 저장할 수 있어야합니다. 메모리 경고없이 어떻게 이것을 할 수 있습니까?

Btw : Apple SquareCam 샘플 코드를 사용하여 카메라로 사진을 찍고 있습니다.

미리 감사드립니다.

답변

2

jpg로 저장/저장하지 않으면 사진이 상당히 커질 수 있습니다. 해결책은 샌드 박스의 "디스크"에 즉시 저장하는 것입니다 (JPEG 형식은 좋은 생각입니다). 그리고 저장 한 파일의 경로 만 배열에 저장하십시오.

은 샘플 코드를 참조하십시오 :

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* imgName = [NSString stringWithFormat:@"%@.jpg", self.uid]; 
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:imgName]; 
    NSData *webData = UIImageJPEGRepresentation(self.theImage, 0.5); 
    [webData writeToFile:imagePath atomically:YES]; 
    self.imageURL = imagePath; 
+0

감사합니다. 그것은 나를 도왔다. –

1

그냥 image.so의 경로를 저장 이미지를 저장하지 마십시오을, u는 더 잘 관리하고 응용 프로그램에 더 할 수 있습니다. 공연.

관련 문제