Obj-C:ARC的EXC_BAD_ACCESS奇怪错误

时间:2013-05-16 18:48:39

标签: objective-c xcode automatic-ref-counting exc-bad-access

所以我在名为WebView的自定义NSObject子类中有一个GoogleLinkFetcher,我所做的是从webviewwebView: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]。

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

1 个答案:

答案 0 :(得分:3)

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

webView:didFinishLoadForFrame:方法中放置一个断点,并检查self是否仍然是GoogleLinkFetcher的有效实例。在致电NSLog之前,请self getLinks