gpt4 book ai didi

objective-c - 如何从 block 内对主线程执行 UIKit 调用

转载 作者:行者123 更新时间:2023-12-04 03:03:51 25 4
gpt4 key购买 nike

我正在尝试从回调 block 中推送 View Controller 。我要推送的 View Controller 包含一个 UIWebView,它提示我应该在主线程上调用它。我尝试使用 NSInvocation 无济于事。如何在主线程上调用 presentModalViewController:animated

[vc requestUserPermissionWithCallback:^(BOOL inGranted)
{
if (inGranted)
{
if (serviceType == PXServiceTypeTwitter)
{
//[ad.rootViewController presentModalViewController:vc animated: YES]; // crashes
NSInvocation *invocation = [NSInvocation invocationWithTarget:ad.rootViewController selector:@selector(presentModalViewController:animated:) retainArguments:YES, vc, YES];
[invocation invokeOnMainThreadWaitUntilDone:NO]; // same result
}
}
else
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
}];

错误信息:

bool _WebTryThreadLock(bool), 0x6b21090: 试图从主线程或网络线程以外的线程获取网络锁。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...

我正在使用类别 NSInvocation+CWVariableArguments .

最佳答案

只需使用 dispatch_get_main_queue() 获取主线程,然后分派(dispatch)给它:

dispatch_async(dispatch_get_main_queue(), ^{
// whatever code you want to run on the main thread
});

关于objective-c - 如何从 block 内对主线程执行 UIKit 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411271/

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