gpt4 book ai didi

ios - 如何找出导致 IOS 8 上出现 didHideZoomSlider 错误的原因?

转载 作者:IT王子 更新时间:2023-10-29 08:02:52 26 4
gpt4 key购买 nike

以下错误不断出现在我的应用程序的 crashlytics 日志中

在 iOS 8 上:

libobjc.A.dylib objc_msgSend + 5 didHideZoomSlider:

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0000000e

我不知道从哪里开始?有人知道我应该寻找什么吗?

整个堆栈跟踪:

 0
libobjc.A.dylib
objc_msgSend + 5
didHideZoomSlider:
1 Foundation
__NSFireDelayedPerform + 468
2
CoreFoundation
__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
3
CoreFoundation
__CFRunLoopDoTimer + 650
4
CoreFoundation
__CFRunLoopRun + 1418
5
CoreFoundation
CFRunLoopRunSpecific + 456
6
CoreFoundation
CFRunLoopRunInMode + 106
7
GraphicsServices
GSEventRunModal + 136
8
UIKit
UIApplicationMain + 1440
9
main.m line 8
main

错误消息是否意味着 ImagePickerCameraView 出了问题?

我有时也会得到

 Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0xeec1ff5e
0 libobjc.A.dylib objc_msgSend + 21 didHideZoomSlider:

如果 ImagePicker 是麻烦制造者,这里是代码摘录:

- (IBAction)onTakePictureToolbarButtonPushed:(id)sender {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setSourceType:
[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]
? UIImagePickerControllerSourceTypeCamera
: UIImagePickerControllerSourceTypePhotoLibrary
];

[imagePicker setDelegate:self];
[self presentViewController:imagePicker animated:YES completion:nil];
}



- (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info {
UIImage* rawImage = [info objectForKey: UIImagePickerControllerOriginalImage];

NSData *imageData = UIImageJPEGRepresentation(rawImage, 0.3);
[imageData writeToFile: @"img.jpg" atomically: YES];

[self dismissViewControllerAnimated: YES completion:nil];
[self.tableView reloadData];

}

最佳答案

我已经能够在我的代码中重现这个问题。这似乎是 Apple 代码中的错误,并且是时间问题。

我还没有通过点击实际拍照来复制它,但我可以在点击取消时复制它。您可以尝试在您的代码中执行此操作,看看它是否适合您。打开相机拍照,然后捏合缩放。你会在屏幕上看到一个小的缩放 slider 。大约 4-5 秒后,缩放 slider 消失。这就是计时的用武之地。如果您在它开始消退时单击取消,您可能会导致它崩溃。

我的假设是 Apple 有一个动画 block ,它会在其中淡化缩放 slider 。在该动画完成时,它会调用 didHideZoomSlider: 而不检查它是否引用了图像选择器。

我认为复制我的取消代码更容易,因为它非常简单:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissViewControllerAnimated:YES completion:nil];
}

我的假设是,由于执行速度如此之快,因此能够在该动画中间关闭它。因此,我的解决方案实际上是将我对 View 的驳回延迟一小段时间。

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
__weak typeof(self) wSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[wSelf dismissViewControllerAnimated:YES completion:nil];
});
}

我不认为这“解决”了问题,而是减少了它,以至于我无法再复制它。这应该作为 Apple 的错误提交(我接下来会这样做)。

更新:已发送至 Apple。

关于ios - 如何找出导致 IOS 8 上出现 didHideZoomSlider 错误的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26844432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com