0

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

我已经成功地在启动时在该类文件中调用了一个函数,但是当我将创建 webview 的代码添加到该函数时,我收到如下错误:“试图从一个线程以外的线程获取 web lock主线程或 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];

我哪里错了?

4

1 回答 1

1

您正在从后台线程创建 web 视图,这是 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];   
});
于 2012-09-19T13:49:22.120 回答