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(ただし、アプリはクラッシュしません)。

タイプ「id:<UIWebViewDelegate>」のパラメーターに「const Class」を送信する互換性のないポインター タイプ

問題は、NSLogが開こうとしている正しい URL をログに記録する一方で、実際にはページが呼び出されないことです (ページが開かれるたびに増分する PHP カウンターがそのページにあるため、これを知ることができます)。

だから私の質問は:

  1. .h ファイルに何か不足していますか? この新しい WebView に関しては何も追加していません
  2. 参照しているオブジェクトが欠けているように感じますselfこれに対する私の先行質問でもここで言及されました。
  3. の応答を確認するにはどうすればよいですかloadRequest

申し訳ありませんが、私の質問からわかると思いますが、Obj-C は私にとって少し新しいものですが、ここで本当に苦労しているので、助けていただければ幸いです! ありがとう。

4

2 に答える 2

1

あなたのopenWebViewメソッドは+最初からクラスメソッドです。このため、オブジェクトはありません。 selfこの場合、クラスを返します(したがって警告)。おそらくインスタンスメソッドになりたいopenWebViewので、に変更して+から-selfインスタンス化されたオブジェクトをポイントします。

loadRequestが機能したかどうかを確認するには、UIWebViewDelegateデリゲートメソッドwebViewDidStartLoadwebViewDidFinishLoadデリゲート(つまりFoo.m)を実装し、それらが呼び出されるかどうかを確認します。

于 2012-09-19T17:51:38.940 に答える
1

クラス メソッドを実装しています (+記号で示されます)。selfクラス内のメソッドは、インスタンスではなく、クラス自体を参照します。delegateただし、 (または実際には何か)のUIWebViewはオブジェクトでなければなりません。

于 2012-09-19T17:47:43.227 に答える