Iphone 重复使用摄像头会使应用程序崩溃吗?

Iphone 重复使用摄像头会使应用程序崩溃吗?,iphone,memory-management,core-data,camera,Iphone,Memory Management,Core Data,Camera,我有一个应用程序,可以从用户图像生成幻灯片。他们可以从图书馆抓取或拍照。我发现重复使用从图书馆抓取图像是可以的。但重复拍照会导致行为不稳定。我一直在崩溃,但大多数情况下,发生的似乎是在“didFinishPickingMediaWithInfo”之后重新加载视图,这会把事情搞砸 我没有泄密,而且似乎在每张照片拍摄后都能正常释放。我正在调整图像大小并将其保存在数据库中。还有其他人遇到这种情况吗?相机不是经常被称为这样吗?很抱歉弄错了。它不是连续的,它是拍照、移除和释放相机,然后用户选择a、B或C选

我有一个应用程序,可以从用户图像生成幻灯片。他们可以从图书馆抓取或拍照。我发现重复使用从图书馆抓取图像是可以的。但重复拍照会导致行为不稳定。我一直在崩溃,但大多数情况下,发生的似乎是在“didFinishPickingMediaWithInfo”之后重新加载视图,这会把事情搞砸


我没有泄密,而且似乎在每张照片拍摄后都能正常释放。我正在调整图像大小并将其保存在数据库中。还有其他人遇到这种情况吗?相机不是经常被称为这样吗?

很抱歉弄错了。它不是连续的,它是拍照、移除和释放相机,然后用户选择a、B或C选项(他们在整个过程中都会被提示对许多事情进行选择),然后他们可以拍摄另一张照片、移除和释放相机……等等……当他们完成所有数据输入时,这种情况会发生多次

在他们选择相机后,我称之为这个代码。我没有释放dealloc方法中的图像选择器

- (void)openCamera {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{

    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
}

在他们“使用”了从相机上拍摄的照片后,我称之为以下代码。它根据图像的原始大小调整图像大小

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

UIImage *tempCameraImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [picker dismissModalViewControllerAnimated:YES];

    CGFloat originalSize = tempCameraImage.size.width * tempCameraImage.size.height;
    NSLog(@"Original Size %f", originalSize);
    if (originalSize > 2500000.0) {
        CGSize size = tempCameraImage.size;
        CGRect rect = CGRectMake(0.0, 0.0, .23 * size.width, .23 * size.height);
        UIGraphicsBeginImageContext(rect.size);
        [tempCameraImage drawInRect:rect];
        theImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        CGFloat totalSize = theImage.size.width * theImage.size.height;
        NSLog(@"Final Camera Size %f", totalSize);
        [self resizeImageCamera];
        return;
    }
    else {
        CGSize size = tempCameraImage.size;
        CGRect rect = CGRectMake(0.0, 0.0, .27 * size.width, .27 * size.height);
        UIGraphicsBeginImageContext(rect.size);
        [tempCameraImage drawInRect:rect];
        theImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        CGFloat totalSize = theImage.size.width * theImage.size.height;
        NSLog(@"Final Camera Size %f", totalSize);
        [self resizeImageCamera];
        return;
    }
}

}

}


我意识到我对这个形象做了很多。如果我延迟几次,会有帮助吗?

你肯定出了问题,因为在正常使用相机时,你几乎可以无限期地继续拍照。除非SDK中有一些错误行为,但我敢肯定没有那么严重的问题-至少如果你在Google上找不到任何信息。发布你的代码我们可能会提供帮助谢谢,刚刚发布的代码
-(void)resizeImageCamera {
if (editingImage1) {
    NSManagedObject *image = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:slideshow.managedObjectContext];
    slideshow.image = image;
    [image setValue:theImage forKey:@"image"];

    CGSize size = theImage.size;
    CGRect rect = CGRectMake(0.0, 0.0, .15 * size.width, .15 * size.height);
    UIGraphicsBeginImageContext(rect.size);
    [theImage drawInRect:rect];
    slideshow.thumbnailImage1 = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [self finishCameraImage];
    return;
}
-(void)finishCameraImage {

if (editingImage1) {
    keyInt = @"2";
    [editedObject setValue:keyInt forKey:@"script1"];
    pictureView.alpha = 0;
    self.navigationItem.rightBarButtonItem = nil;
    editedFieldKey = @"line2Int";
    editedFieldName = NSLocalizedString(@"line2Int", @"display name for line2");
    self.title = editedFieldName;
    linePicker.hidden = NO;