0
UIImagePickerController를 사용하여 앱에서 두 장의 사진을 찍습니다. 아래에 선언 된 AppDelegate에 선언 된 두 속성의 NSData 형식으로 두 이미지를 저장합니다. 나는 다음과 같이 저장하고메모리 부족 경고로 iOS 앱이 작동하지 않음
@property(nonatomic, retain) NSData *dataCheckFront;
@property(nonatomic, retain) NSData *dataCheckBack;
이미지 :
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSLog(@"camera took photo...");
[self cleanUpOverlayAndCameraView];
if (iCheckSide==FRONT) {
NSData *dataImage= [[NSData alloc] initWithData:UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 1.0)];
((AppDelegate*)[[UIApplication sharedApplication] delegate]).dataCheckFront= dataImage;
[dataImage release];
dataImage= nil;
}
else {
NSData *dataImage= [[NSData alloc] initWithData:UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 1.0)];
((AppDelegate*)[[UIApplication sharedApplication] delegate]).dataCheckBack= dataImage;
[dataImage release];
dataImage= nil;
}
}
나는 미래에 시간의 어느 시점까지-에 이미지를 필요로하고 나는 곳을 피해 보관 할 수 있습니다. 자체 전무 앱이 때문에 메모리 부족 문제로 종료되는 설정하기 전에,
[((AppDelegate*)[[UIApplication sharedApplication] delegate]) setDataCheckBack:nil];
[((AppDelegate*)[[UIApplication sharedApplication] delegate]) setDataCheckFront:nil];
그러나 : 는 사용 후 나는 다음과 같은 무기 호에 해당 속성을 설정하고있다.
해결 방법?
왜 사진을 캐시 또는 문서 폴더에 저장하지 않고 NSData를 앱 대리인에 저장하지 않으시겠습니까? –
이처럼 강렬한 작업은 기본 스레드 대신 백그라운드 스레드에서 수행해야합니다 (UI 막힘을 피하기위한 팁). 좀 더 자세히 설명해 주시겠습니까? –
@verbumdei : 귀하의 제안에 대해 감사드립니다. 사실 나는 iOS를 처음 사용합니다. 그래서 그것에 대해 많이 알지 마라. 제게 documenta 디렉토리에 저장하면 NSData가 아닌 저를 구할 수 있습니다. 다시 한번 .. 문서 폴더 나 임시 폴더에 저장해야합니까? 회신 해주십시오 .. –