Gre*_*reg 11 iphone objective-c uiimagepickercontroller ios
我们几年前开发的应用程序自iOS 10推出以来就开始崩溃.该应用程序重复呈现UIImagePickerControllers,以允许用户捕获主题的多张照片.这样做了40多次后,应用程序崩溃了.这在我们测试过的所有设备上都是可重现的,但在引入iOS 10之前没有发生.我们在Info.plist文件中有NSCameraUsageDescription和NSPhotoLibraryUsageDescription键.
我创建了一个演示问题的最小示例应用程序.这是最终导致崩溃的代码:
- (IBAction) cameraPressed:(id) sender {
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.delegate = self;
self.picker.allowsEditing = NO;
[self presentViewController:self.picker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
当用户反复使用连接到此IBAction的相机按钮时,它最终开始变慢(拾取器的呈现开始花费更长时间),并最终崩溃(通常在相机使用50次以后).没有生成崩溃日志,但是当连接到Xcode时,这样的输出会出现在导致崩溃的控制台中:
2016-11-04 20:30:11.884984 WLPBeta[2747:275474] [MC] Invalidating cache
2016-11-04 20:30:11.890776 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:30:13.017608 WLPBeta[2747:275091] [MC] Invalidating cache
2016-11-04 20:30:13.018312 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:30:19.271720 WLPBeta[2747:276311] [MC] Invalidating cache
2016-11-04 20:30:19.279462 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:08.229294 WLPBeta[2747:278515] [MC] Invalidating cache
2016-11-04 20:32:08.273941 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:09.335711 WLPBeta[2747:278514] [MC] Invalidating cache
2016-11-04 20:32:09.342161 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:14.193376 WLPBeta[2747:278515] [MC] Invalidating cache
2016-11-04 20:32:14.213902 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:47.944657 WLPBeta[2747:275091] [MC] Invalidating cache
2016-11-04 20:32:47.972053 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:48.550934 WLPBeta[2747:279485] [MC] Invalidating cache
2016-11-04 20:32:48.575065 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:50.855308 WLPBeta[2747:279485] [MC] Invalidating cache
2016-11-04 20:32:50.856329 WLPBeta[2747:273019] [MC] Reading from public effective user settings.
2016-11-04 20:32:52.201535 WLPBeta[2747:275091] [GatekeeperXPC] Connection to assetsd was interrupted or assetsd died
Run Code Online (Sandbox Code Playgroud)
我还向Apple发布了一个错误报告,并将其添加到开放式雷达中:http://www.openradar.me/radar?id = 4941109843197952
有没有人遇到过这个问题?是否有一个修复程序可以让我们在没有使用Xcode 8重新编译应用程序的情况下移过这个?不幸的是,我们正在使用尚未为Xcode 8和iOS 10 SDK做好准备的第三方库,因此我们仍在使用Xcode 7.3.1构建应用程序.
编辑:这是一个Github仓库的链接,其中包含一个可用于演示问题的示例应用程序.
https://github.com/lolay/ImagePickerTest
编辑2:如果我更改代码,以便我在viewDidLoad中分配和初始化选择器,它在相机使用相同数量的相机按钮后仍然会崩溃.
- (void)viewDidLoad {
[super viewDidLoad];
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.allowsEditing = NO;
}
- (IBAction) cameraPressed:(id) sender {
[self presentViewController:self.picker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
试试这个代码。
- (IBAction) cameraPressed:(id) sender {
if (self.picker == nil){
self.picker = [[UIImagePickerController alloc] init];
}
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.delegate = self;
self.picker.allowsEditing = NO;
[self presentViewController:self.picker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3121 次 |
最近记录: |