我创建了一个 NSObject 类并包含在 init 中,我创建了一个 uiwebview 将委托设置为 self 并发送加载请求。
由于某种原因, 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
有人有什么想法吗?
谢谢
鲁迪
如果您使用 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
如果您不使用 ARC,则需要记住释放您的webView
dealloc 方法中的对象也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)