Iphone 僵尸杀死了我的应用程序

Iphone 僵尸杀死了我的应用程序,iphone,objective-c,memory,ios4,Iphone,Objective C,Memory,Ios4,我正在UITableView中实现异步图像加载,如果我快速滚动行,我的应用程序会因为发送给僵尸的消息而崩溃。。。我到底怎么了 //loading image from URL -(void)loadImageFromURL:(NSURL*)url { if (connection!=nil) { [connection release]; } //data is NSMutableData if (data!=nil) { [data release]; } N

我正在
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]; connection = nil; }
if (data!=nil) { [data release]; data = nil; }
这样,您的
if
语句将实际触发。

此处:

您正在释放数据。稍后,您尝试使用发布的数据,使其崩溃。试试这个:

if (connection!=nil) { [connection release]; connection = nil; }
if (data!=nil) { [data release]; data = nil; }

这样,你的
if
语句实际上会触发。

因为你的应用程序在滚动时崩溃,所以查看
tableView:cellforrowatinexpath:
中发生的事情的代码可能会有所帮助。数据是NSData还是NSMutableData?在这里,我认为是吸血鬼杀死了app@Mark我责备我的女朋友和《暮光之城》,如果我再听到一次吸血鬼的声音,我会在你的应用程序在滚动时崩溃时抛出提示,查看
tableView:cellForRowAtIndexPath:
中发生的事情的代码可能会有帮助,因为“数据”是NSData还是NSMutableData?在这里我认为是吸血鬼杀死了app@Mark我责备我的女朋友和《暮光之城》,如果我再听一次吸血鬼的话,我会大发雷霆的,你让我开心极了!非常感谢,你让我开心!