【发布时间】:2012-08-08 04:53:25
【问题描述】:
我有四个选项卡控制器,其中一个在视图控制器中有一个 UIWebView。当应用程序启动时,我创建了一个新线程来在我的 webView 中加载 web 内容,因此当 web 完成加载后,当用户通过 tab 键进入视图控制器时,它就可以查看了。
我的问题是,webVIew 根本没有在新创建的线程中加载请求,但是当我将 loadRequest 放入 viewDidLoad 时它正在工作。我花了整整一天的时间来找到解决方案,但一点运气都没有。
这是我的代码:
- (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];
}
有人可以解决我的问题吗?非常感谢。
【问题讨论】:
-
我想你在这里有几个问题。如果你要尝试这个,你需要了解 threading。
-
UIKit 对象不是线程安全的,这是一个完美的例子。
-
那么,有什么方法可以实现我的目标吗?另一个问题是,当我在 viewDidLoad 函数和 [super viewDidLoad] 之前在主线程中运行 loadView 时,我的 viewController 处于空白屏幕;
标签: ios multithreading uiwebview