Objective c 如何在类文件中创建并销毁UIWebView
我试图在启动应用程序时在类文件中动态创建UIWebView 我已经成功地获得了一个在启动时在该类文件中调用的函数,但是当我向该函数添加创建webview的代码时,我得到了如下错误:“试图从主线程或web线程以外的线程获取web锁。这可能是从辅助线程调用UIKit的结果。正在崩溃…“ 我创建UIWebView的代码如下:Objective c 如何在类文件中创建并销毁UIWebView,objective-c,ios,xcode,uiwebview,uiwebviewdelegate,Objective C,Ios,Xcode,Uiwebview,Uiwebviewdelegate,我试图在启动应用程序时在类文件中动态创建UIWebView 我已经成功地获得了一个在启动时在该类文件中调用的函数,但是当我向该函数添加创建webview的代码时,我得到了如下错误:“试图从主线程或web线程以外的线程获取web锁。这可能是从辅助线程调用UIKit的结果。正在崩溃…“ 我创建UIWebView的代码如下: UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)]; [webView
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];
我哪里出错了?您正在从后台线程创建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];
});
此代码段位于哪个方法内?谢谢!确实如此,但现在我在
[webView setDelegate:self
]上遇到了另一个错误-不兼容的指针类型将“const Class”发送到“id”类型的参数,我必须假设您从类方法内调用此方法+(void)您创建Web视图的方法
。因此,将委托设置为self无法工作…您必须实例化一个对象才能将其用作委托,因此我刚刚删除了该行,现在所有操作都无错误…非常感谢您!!不用担心,但请注意,您可能需要委托才能知道Web视图何时完成加载以供检查ple…我只是好奇,好像你可以扩展这个类,并创建一个“类委托”,在loadView完成后调用它?这不应该作为一种解决方法吗?