NSURLConnection奇怪的崩溃

问题描述:

我正在创建一个必须在Mac OS X Tiger上运行的Mac应用程序。出于一些奇怪的原因,它不断崩溃。调试器返回以下错误:NSURLConnection奇怪的崩溃

0x90a594d1 <+0033> mov (%edi,%edx,4),%eax

我试过谷歌的答案,但我什么也没找到。我究竟做错了什么?

-(IBAction)loadPage:(id)sender{ 
    NSURL *URL = [NSURL URLWithString:@"http://www.google.com"]; 
    [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:URL] delegate:self]; 
    NSLog(@"STARTED!"); 
} 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
    NSLog(@"STARTED!2"); 
    data = [[NSMutableData alloc]init]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d{ 
    NSLog(@"STARTED!3"); 
    [data appendData:d]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ 

    NSLog(@"STARTED!4"); 
    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"%@", str); 

    [webView loadHTMLString:str baseURL:[NSURL URLWithString:[field stringValue]]]; 

    [str release]; 
    [data release]; 
} 
+0

如何“数据”所定义,哪里“田”从何而来? – 2012-02-12 07:31:09

+0

在头文件上。 NSMutableData *数据; IBOutlet NSTextField *字段; – 2012-02-12 07:38:28

+0

不能真正看到任何明显的错误,可能会导致崩溃,对不起,认为你将不得不尝试使用调试器追踪更多。你真的不应该在didReceiveResponse中分配数据:尽管它可能被多次调用。在loadPage中执行:相反,只需在didReceiveResponse中将长度重置为0即可。 – 2012-02-12 08:04:02

的解决方案是保留NSURLConnection的