僵尸杀死我的应用程序
问题描述:
我在UITableView
中实现异步图像加载,如果我快速滚动行,我的应用程序因消息发送给僵尸而崩溃......我在这里做什么错?僵尸杀死我的应用程序
//loading image from URL
-(void)loadImageFromURL:(NSURL*)url {
if (connection!=nil) { [connection release]; }
//data is NSMutableData
if (data!=nil) { [data release]; }
NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
//Append received data when it is received
- (void)connection:(NSURLConnection *)theConnection didReceiveData:(NSData *)incrementalData {
if (data==nil) { data = [[NSMutableData alloc] init]; }
[data appendData:incrementalData]; //Message sent to zombie, app CRASHES HERE
}
//When finished
- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {
//so self data now has the complete image
[connection release];
connection=nil;
//Use received data to construct image
[data release];
data=nil;
}
答
这里:
if (connection!=nil) { [connection release]; }
if (data!=nil) { [data release]; }
你发布的数据。之后你会尝试使用已发布的数据,以便它崩溃。试试这个:
if (connection!=nil) { [connection release]; connection = nil; }
if (data!=nil) { [data release]; data = nil; }
这样你的if
语句会实际触发。
+0
非常感谢,你使我的一天! – 2010-10-22 18:14:07
由于您的应用程序在滚动时崩溃,因此查看'tableView:cellForRowAtIndexPath:' – bosmacs 2010-10-22 18:05:54
中发生的代码可能会有所帮助。“data”是NSData还是NSMutableData? – 2010-10-22 18:06:15
@Evan它是'NSMutableData' – 2010-10-22 18:07:12