0

アプリケーションの起動時に、クラス ファイル内に UIWebView を動的に作成しようとしています。

起動時にそのクラス ファイル内で呼び出される関数を正常に取得しましたが、その関数に 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];

どこが間違っていますか?

4

1 に答える 1

1

バックグラウンド スレッドから webview を作成していますが、これは Apple によって許可されておらず、アプリがクラッシュします。
メイン スレッドから webview を作成するには、dispatch_async を使用する必要があります。

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 に答える