Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在类文件中创建并销毁UIWebView_Objective C_Ios_Xcode_Uiwebview_Uiwebviewdelegate - Fatal编程技术网

Objective c 如何在类文件中创建并销毁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的代码时,我得到了如下错误:“试图从主线程或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];

我哪里出错了?

您正在从后台线程创建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完成后调用它?这不应该作为一种解决方法吗?