1

所以我有一个WebView内部NSObject调用的自定义子类GoogleLinkFetcher,我所做的就是加载一个请求,webview然后webView:didFinishLoadForFrame:我调用 self 来调用它的方法。如果我不调用该方法,则一切正常,如果我执行EXC_BAD_ACCESS错误,则指向该行。我读了一些EXC_BAD_ACCESS关于解除分配和内存分配的内容,但我在一个 ARC 环境中,所以我希望不会有问题......这是代码:

-(void)searchLinks
{
    NSLog(@"searching links at googlelinksearcher url: %@", googleUrl);
    NSURLRequest *request = [NSURLRequest requestWithURL:googleUrl];
    [[webView mainFrame] loadRequest:request];
    [webView setFrameLoadDelegate:self];
}

-(void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
{
    if(frame == sender.mainFrame)
    {
        NSLog(@"main frame");
        [self getLinks];
    }
}

错误指向 [self getLinks]。

我希望有人可以帮助,提前谢谢!

4

1 回答 1

3

问题可能是您开始加载过程,但没有对您的GoogleLinkFetcher实例进行强引用,并且它在 Web 视图完成加载之前被释放(实际上是在它开始之后)。

在方法中放置一个断点webView:didFinishLoadForFrame:并检查是否self仍然是GoogleLinkFetcher. 或者NSLog self在你打电话之前getLinks

于 2013-05-16T18:51:53.793 回答