2013-05-16 46 views
1

奇怪的错误所以我有一个WebView定制NSObject子类,称为GoogleLinkFetcher内,我做的是加载从webview的请求,并在webView:didFinishLoadForFrame:我称之为自我调用一个方法就可以了。如果我不叫这种方法一切正常,如果我做一个EXC_BAD_ACCESS错误点,该行。我读了一些关于EXC_BAD_ACCESS关于取消分配和内存分配,但我在ARC环境,我希望不会有这样的问题...这里是代码:右的OBJ-C: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]; 
    } 
} 

错误指向[自我getLinks。

我希望有人能帮助,在此先感谢!

回答

3

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

webView:didFinishLoadForFrame:方法中放置断点并检查self是否仍然是GoogleLinkFetcher的有效实例。或拨self,然后致电getLinks

+2

(同样的想法在这里:-)但是如果自我是零则*不*会发生。我假设即使实例已被释放,self也是* not * nil。也许在dealloc中设置断点或NSLog()会很有帮助。 –

+0

@MartinR对。感谢您指出。 – DrummerB

+0

非常感谢,但我试着在我的googleLinkFetcher属性上加上一个强引用,我试着用NSLog和断点,现在我得到这个错误:*** WebKit在webView中放弃了未捕获的异常:didFinishLoadForFrame:delegate: - [__ NSCFString getLinks]:发送到实例0x101a10900的无法识别的选择器... – BigCola