gpt4 book ai didi

ios - UIImagePickerController 偶尔死机

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:20 26 4
gpt4 key购买 nike

我在 Unity 应用程序中使用 UIImagePickerController。当用户按下“完成”时,它偶尔会卡住。它最常发生在 3GS 上——大约每三次——但我也偶尔会在 iPhone 5 上卡住。这个错误出现在 iOS 4.3 到 7.0 上。我无法确定哪些因素与卡住相关。当我遇到此卡住时,我也没有收到内存警告。

日志中没有错误,也没有任何崩溃日志。该应用程序继续像往常一样在 UIImagePickerController 后面运行。控制台中有很多看似相关的消息,例如“拒绝文件写入数据/private/var/mobile/Media/PhotoData”,但是当存在卡住和一切正常时,它们偶尔会出现好的。

下面是我如何显示选择器:

- (void)showPicker:(UIImagePickerControllerSourceType)type
{
imgPicker = [[[CustomPhotoPicker alloc] init] autorelease];
imgPicker.delegate = self;
imgPicker.sourceType = type;
imgPicker.allowsEditing = _pickerAllowsEditing;

// wrap and show the modal
[self showViewControllerModallyInWrapper:imgPicker];

}

这是委托(delegate)方法:

- (void)imagePickerController:(UIImagePickerController*)imgPicker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
NSLog( @"imagePickerController didFinishPickingMediaWithInfo");

// If the freeze is present, this method isn't called
}

- (void)imagePickerController:(UIImagePickerController *)imgPicker
didFinishPickingImage:(UIImage *)image
editingInfo:(NSDictionary *)editingInfo
{
NSLog( @"imagePickerController didFinishPickingImage");

// Tried to use deprecated callback. If the freeze is present, this method isn't called either.
}

我认为这是 UIImagePickerController 中的一个错误,但没有一个不使用 Unity 的 iOS 开发人员遇到过这个问题,我想如果这样的错误已经被修复了它出现在 4.3 中。

最佳答案

有一个解决方法:您可以在 UnityAppController.mm 中将 CFRunLoopRunInMode 静音,如下所示:

- (void)repaintDisplayLink
{
[_displayLink setPaused: YES];
{
static const CFStringRef kTrackingRunLoopMode = CFStringRef(UITrackingRunLoopMode);
if (![EtceteraManager picking])
{
while (CFRunLoopRunInMode(kTrackingRunLoopMode, kInputProcessingTime, TRUE) == kCFRunLoopRunHandledSource)
;
}
}
}

关于ios - UIImagePickerController 偶尔死机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591701/

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