【问题标题】:actions after dismissModalViewControllerAnimateddismissModalViewControllerAnimated 后的动作
【发布时间】:2012-01-11 11:31:51
【问题描述】:

在我用相机选择一张照片后,我将它保存为NSData。这需要一段时间,我不希望我的用户等待它。我希望它发生在后台。我的问题是在我调用“dismissModalViewControllerAnimated:NO”之后执行方法是否明智。

这是我的代码,输出如下:

调试1
调试2
调试4
调试5
调试6
调试3

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

// Access the uncropped image from info dictionary
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

NSLog(@"debug1");

// Save image in the normal photo album
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

NSLog(@"debug2");

[[MySingleton sharedSingleton] addImg:image];

NSLog(@"debug3");
[picker dismissModalViewControllerAnimated:NO];

[_delegate startStep2];

}

-(void) addImg: (UIImage *) img {

NSLog(@"debug4");

NSData *jpegData = UIImageJPEGRepresentation([img rotateAndScaleFromCameraWithMaxSize:1500.0], 0.9f);

NSLog(@"debug5");

image   = [[NSData alloc] initWithData:jpegData];

NSLog(@"debug6");
}

我可以先关闭视图控制器然后再做其他事情吗,或者这不是一个好方法吗?

edit// 我确实通过这样做解决了等待问题:

[[MySingleton sharedSingleton] performSelectorInBackground:@selector(addImg:) withObject:image];

【问题讨论】:

    标签: objective-c ios5 uiimage


    【解决方案1】:

    一旦你拥有retained所有必需的信息,我认为你可以关闭选择器。

    【讨论】:

      【解决方案2】:

      最好先做这些事情然后关闭视图控制器。你可以添加活动指示器让用户知道处理正在继续..

      【讨论】:

        【解决方案3】:

        [[MySingleton sharedSingleton] performSelectorInBackground:@selector(addImg:) withObject:image];

        成功了..

        【讨论】:

          猜你喜欢
          • 2011-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多