アプリで 2 枚の写真を撮るために UIImagePickerController を使用しています。以下のように宣言されている AppDelegate で宣言されている 2 つのプロパティに、これらの 2 つの画像を NSData 形式で保存しています。
@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;
}
}
将来のある時点までの画像が必要であり、どこかに保存することは避けられません。使用後、以下のようにこれらのプロパティを nil に設定しています。
[((AppDelegate*)[[UIApplication sharedApplication] delegate]) setDataCheckBack:nil];
[((AppDelegate*)[[UIApplication sharedApplication] delegate]) setDataCheckFront:nil];
ただし、それ自体を nil に設定する前に、メモリ不足の問題のためにアプリが終了します。
これを解決するには?