我有一个UIWebView
成功地从包含的类文件中动态创建(我认为......没有错误被吐出)。我在Foo.m
类文件中创建此webview的函数是:
+(void) openWebView {
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];
NSLog(@"Successful web open: ", url);
});
}
我在setDelegate
行(虽然不会使应用程序崩溃)上收到警告错误消息,内容如下:
不兼容的指针类型将'const Class'发送到'id:< UIWebViewDelegate>'类型的参数
问题是虽然NSLog
确实记录了它正在尝试打开的正确URL,但页面实际上永远不会被调用(我可以告诉它,因为我在该页面上有一个PHP计数器,每次都会增加打开了。)
所以我的问题是:
self
引用的对象。它也被提到了here in my precursor question。loadRequest
对不起大家,正如你可能从我的问题中弄清楚的那样,Obj-C对我来说有点新鲜,但我真的在这里苦苦挣扎并且非常感谢你的帮助!感谢。
答案 0 :(得分:1)
您正在实现一个类方法(由+
符号表示)。类方法中的self
引用类本身,而不是实例。 delegate
(或其他任何东西)的UIWebView
必须是一个对象。
答案 1 :(得分:1)
您的openWebView
方法是一种类方法,因为开头是+
。因此,您没有对象。在这种情况下,self
返回类(因此警告)。也许您希望openWebView
成为实例方法,因此将+
更改为-
,然后self
将指向您的实例化对象。
要检查loadRequest是否有效,请在委托中实现UIWebViewDelegate
委托方法webViewDidStartLoad
和webViewDidFinishLoad
(即Foo.m)并查看它们是否被调用。