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

时间:2012-09-19 13:39:53

标签: objective-c ios xcode uiwebview uiwebviewdelegate

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

我在启动时已经成功地在该类文件中调用了一个函数,但是当我添加代码来为该函数创建webview时,我收到这样的错误:“试图获取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];

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您正在从后台线程创建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];   
});