4

私は NSObject クラスを作成し、init に uiwebview を作成してデリゲートを自分自身に設定し、ロード要求を送信しました。

何らかの理由で webViewDidFinishLoad または didFailLoadWithError が発生することはありません。理由がわかりません。

//
//  RXBTest.h
#import <Foundation/Foundation.h>
@interface RXBTest : NSObject <UIWebViewDelegate>
@end

//  RXBTest.m
//  pageTest
#import "RXBTest.h"
@implementation RXBTest
- (id) init
{
     if((self=[super init])){
         UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
         [webView setDelegate:self];

         [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
     }
     return self;
}   
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
     NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
     NSLog(@"finished");
}
@end

誰にもアイデアはありますか?

ありがとうルディ

4

2 に答える 2

5

ARC を使用している場合、問題は、webView変数がinitメソッドに対してローカルであるため、Web ビューの読み込みが完了する前に割り当てが解除されることです。Web ビューをインスタンス変数として追加してみてください。

@interface RXBTest : NSObject <UIWebViewDelegate>
{
    UIWebView* webView;
}
@end

@implementation RXBTest
- (id) init
{
    if((self=[super init])){
        webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
        [webView setDelegate:self];

        [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
    }
    return self;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    NSLog(@"ERROR LOADING WEBPAGE: %@", error);
}
- (void) webViewDidFinishLoad:(UIWebView*)webView
{
    NSLog(@"finished");
}
@end

webViewARC を使用していない場合は、dealloc メソッドでもオブジェクトを解放することを忘れないでください。

于 2013-01-30T20:42:36.563 に答える
2

これをヘッダー ファイル (.h) に追加するのを忘れました:

#import <UIKit/UIWebView.h>
于 2013-01-30T20:40:44.413 に答える