objective-c - 如何在类文件中创建然后销毁 UIWebView

标签 objective-c ios xcode uiwebview uiwebviewdelegate

我试图在启动应用程序时在类文件中动态创建 UIWebView。

我已经成功获得了一个在启动时在该类文件中调用的函数,但是当我向该函数添加创建 webview 的代码时,我收到如下错误:“尝试获取 web从主线程或 Web 线程以外的线程锁定。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...

我创建 UIWebView 的代码是这样的:

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
[webView setDelegate:self];
[webView setHidden:YES];
NSURL *url = [NSURL URLWithString:address];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];

我哪里出错了?

最佳答案

您正在从后台线程创建 webview,这是 Apple 不允许的,并且会导致您的应用程序崩溃。
您应该使用dispatch_async从主线程创建您的webview:

dispatch_async(dispatch_get_main_queue(), ^{
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
    [webView setDelegate:self];
    [webView setHidden:YES];
    NSURL *url = [NSURL URLWithString:address];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [webView loadRequest:urlRequest];   
});

关于objective-c - 如何在类文件中创建然后销毁 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495966/

相关文章:

更新 GoogleMaps 和 GooglePlaces pod 后 iOS 在发布时崩溃

iOS 将数据推送到第二行的 Parse,而不是顶部

iphone - 在 touchesMoved 中,如何检测滑动然后停止?

IOS 在 Swift 中获取通话分钟数

iphone - 我有一个在 MAC OS 上使用 XCode 开发的项目,我如何在 Linux 上构建它?

iphone - UITextField 清除按钮带有占位符错误?

ios - 在 ARKit (Xcode) 中的 ARSCNView 上滑动

iOS 8 Touch ID 损坏

objective-c - 什么是结构 objc_class 的 methodLists 属性?

ios - UIView 作为弹出景观自动布局问题