Я пытаюсь быстро делать и сохранять фотографии с помощью камеры, так быстро, как это может делать iPhone. Проблема в том, что они не сохраняются до конца, а затем это занимает вечность, или от 1/2 до 3/4 не сохраняются вообще (ошибка Write busy
или -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
).
Готов поспорить, я просто перегружаю память телефона, но не могу придумать, как с этим справиться эффективно. Стандартное приложение камеры iPhone прекрасно справляется с этим - снимает почти со скоростью 1 фото в секунду и сохраняет без проблем.
Есть идеи, как лучше управлять процессом / памятью, чтобы можно было сохранять в процессе работы, но при этом быстро снимать?
Вот немного моего кода. takePicture
вызывается всякий раз, когда self.readyToTake = YES
.
- (void)takePicture { self.delegate = self; [super takePicture]; self.readyToTake = NO; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { self.readyToTake = YES; UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); } - (void)image:(UIImage*)image didFinishSavingWithError:(NSError *)error contextInfo:(NSDictionary*)info { if (error) { NSLog([NSString stringWithFormat:@"** ERROR SAVING PHOTO: %@", [error localizedDescription]]); } }
Спасибо за помощь!
ИЗМЕНИТЬ
Если я перед сохранением уменьшу размер фотографий, например, 480x640, у меня не возникнет проблем с быстрым сохранением. Однако я хочу снимать и сохранять полноразмерные изображения. Родное приложение камеры, кажется, справляется с этим нормально.