gpt4 book ai didi

ios - uiwebview 即使有 delegate = self 也没有加载请求

转载 作者:可可西里 更新时间:2023-11-01 05:23:08 25 4
gpt4 key购买 nike

我已经创建了一个 NSObject 类并包含在初始化中,我创建了一个 uiwebview 将委托(delegate)设置为自身并发送加载请求。

出于某种原因,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 View 完成加载之前被释放。尝试将 WebView 添加为实例变量:

@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,您还需要记住在 dealloc 方法中释放您的 webView 对象。

关于ios - uiwebview 即使有 delegate = self 也没有加载请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com