gpt4 book ai didi

javascript - 使用 WebViewJavascriptBridge 时出现 EXEC_BAD_ACCESS 错误

转载 作者:行者123 更新时间:2023-11-29 04:05:52 25 4
gpt4 key购买 nike

我是一名非常新的 iOS 开发人员(我几天前才开始),我正在尝试利用 WebViewJavascriptBridge class与我的 Storyboard 上的 UIWebView 。每当我尝试使用它时,都会收到 EXEC_BAD_ACCESS 错误。

问题线似乎是:

- (void)viewDidLoad
{
[super viewDidLoad];

WebViewJavascriptBridge* bridge = [WebViewJavascriptBridge bridgeForWebView:webView handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"Received message from javascript: %@", data);
responseCallback(@"Right back atcha");
}];

webView.scrollView.bounces = NO;

[[UIApplication sharedApplication] setStatusBarHidden:YES];

NSString *path = [[NSBundle mainBundle] bundlePath];
path = [NSString stringWithFormat:@"%@/%s", path, "htdocs/index.html"];
NSURL *URL = [NSURL fileURLWithPath:path];

[webView loadRequest:[[NSURLRequest alloc] initWithURL:URL]];
}

准确地说,是最后一行。如果我不提出该请求,我就不会收到错误。我已经用 Objective-C 创建的 UIWebView 进行了尝试,但仍然收到错误,尽管也许我做错了。

有什么建议吗?

编辑:

存储webView的方法就是这段代码+引用outlet。

@interface mcViewController : UIViewController
{
IBOutlet UIWebView *webView;
}
@end

最佳答案

EXC_BAD_ACCESS 通常在您尝试访问已释放的 Objective-C 对象时发生。我从您发布的代码中看不到问题,因此实际问题可能在其他地方。检查你的属性——所有应该strong的东西实际上都是这样声明的吗?

enable zombies获取有关释放后访问的对象类型的信息。

webView 在哪里声明,如何声明?

我猜你正在使用 ARC?

更新

好的,我想我现在看到了问题所在。

您将麻烦的对象声明为局部变量:

WebViewJavascriptBridge* bridge = ...

这意味着一旦离开该函数作用域(即到达函数末尾),该对象就可以被释放,并且是。

尝试为您的bridge声明一个强大的属性。那么它就不会被提前释放。例如:

@property (strong, nonatomic) WebViewJavascriptBridge* bridge;

然后在您的代码中:

self.bridge = ... // the creation code

一旦你完成了你的对象,不要忘记释放它:

self.bridge = nil;

关于javascript - 使用 WebViewJavascriptBridge 时出现 EXEC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241057/

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