use*_*024 26 objective-c uiimagepickercontroller ios
当我尝试从我的代码加载相机时,相机预览为黑色.如果我等待10-20秒,它将显示真实的相机预览.我发现了几个问题,其中一些问题表明在后台运行其他代码应该是这个问题的原因.但是我没有在后台运行任何代码.我该怎么解决这个问题?
这是我运行相机的代码
UIImagePickerController *photoPicker = [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:photoPicker animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)
eck*_*ero 21
大约5个月前,我的团队在iOS7中发现了UIImageViewController的内存泄漏.每个实例化都以指数方式减慢app的速度(即第一个alloc-init延迟1秒,第二个延迟2秒,第三个延迟5秒).最终,我们有30-60个延迟(类似于你正在经历的).
我们通过继承UIImagePickerController并使其成为Singleton解决了这个问题.这样它只被初始化一次.现在我们的延迟很小,我们避免泄漏.如果子类化不是一个选项,请在viewController中尝试一个类属性,然后像这样延迟加载它.
-(UIImagePickerController *)imagePicker{
if(!_imagePicker){
_imagePicker = [[UIImagePickerController alloc]init];
_imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
return _imagePicker;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以稍后再称它为:
[self presentViewController:self.imagePicker animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
我自己也有过这种情况 - 如果主调度线程上正在运行某些东西,就会发生这种情况 - 您是否有机会调整图像大小?
它将预览放在主线程上,如果有东西正在使用它,您会看到黑屏。这是一个错误,解决方法是接管主线程或禁用照片选择器,直到队列空闲
归档时间: |
|
查看次数: |
7182 次 |
最近记录: |