1

我有一个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 计数器,每次打开时都会递增)。

所以我的问题是:

  1. 我在 .h 文件中遗漏了什么吗?关于这个新的 WebView,我没有添加任何内容
  2. 我觉得我错过了self引用的对象。在我对这个问题的前身问题中也提到了这一点。
  3. 我怎样才能检查的响应loadRequest

对不起大家,你可能从我的问题中可以看出,Obj-C 对我来说有点新,但我在这里真的很挣扎,希望能得到帮助!谢谢。

4

2 回答 2

1

You are implementing a class method (indicated by the + sign). self in a class method refers to the class itself, not an instance. The delegate of a UIWebView (or anything really) has to be an object though.

于 2012-09-19T17:47:43.227 回答
1

你的openWebView方法是一个类方法,因为一+开始就是。因此,您没有对象。 self在这种情况下返回类(因此警告)。也许你想openWebView成为一个实例方法,所以将+to 改为-thenself将指向你的实例化对象。

要检查 loadRequest 是否有效,请在您的委托(即 Foo.m)中实现UIWebViewDelegate委托方法webViewDidStartLoadwebViewDidFinishLoad查看它们是否被调用。

于 2012-09-19T17:51:38.940 回答