0

4 つのタブ コントローラーがあり、そのうちの 1 つはビュー コントローラーに UIWebView を持っています。アプリの起動時に webView に Web コンテンツを読み込む新しいスレッドを作成したので、Web の読み込みが完了すると、ユーザーがビュー コントローラーにタブで移動したときに表示できるようになります。

私の問題は、webView が新しく作成されたスレッドにリクエストをまったくロードしないことですが、loadRequest を viewDidLoad に入れると機能します。私は解決策を見つけるために1日を費やしますが、まったく運がありません。

これは私のコードです:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     if (self)
        [NSThread detachNewThreadSelector:@selector(doStuff) toTarget:self withObject:nil];

     return self;
}

- (void)doStuff
{
     NSLog(@"Starting a new thread ...");

     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     url = [NSURL URLWithString:@"http://www.myURL.com"];
     NSURLRequest *request = [NSURLRequest requestWithURL:url];
     [newsWebView loadRequest:request];

     [pool release];
 }

誰かが私の問題を解決できますか? どうもありがとうございました。

4

3 に答える 3

2
 - (void)doStuff
 {
 NSLog(@"Starting a new thread ...");

 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 url = [NSURL URLWithString:@"http://www.myURL.com"];
 NSURLRequest *request = [NSURLRequest requestWithURL:url];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [newsWebView loadRequest:request];
 });
[pool release];
}
于 2015-08-18T07:20:20.420 に答える
1

UIWebViewはUIKitの一部であるため、メインスレッドで操作する必要があります。

- (void)doStuff
{
     NSLog(@"Starting a new thread ...");

     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     url = [NSURL URLWithString:@"http://www.myURL.com"];
     NSURLRequest *request = [NSURLRequest requestWithURL:url];
     dispatch_async(dispatch_get_main_queue(), ^(void){
         [newsWebView loadRequest:request];
     });
     [pool release];
 }
于 2012-08-08T05:09:52.717 に答える