所以我在名为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]。
我希望有人能提前帮助,谢谢!
答案 0 :(得分:3)
问题可能是您开始加载过程但没有对GoogleLinkFetcher
实例的强引用,并且它在Web视图完成加载之前被释放(实际上在它开始之后)。
在webView:didFinishLoadForFrame:
方法中放置一个断点,并检查self
是否仍然是GoogleLinkFetcher
的有效实例。在致电NSLog
之前,请self
getLinks
。