当我试图释放我的类的对象时,ASIHTTP请求不起作用并且应用程序崩溃

时间:2011-09-20 09:10:33

标签: ios ios4

在我的Main类中,我创建了一个AlbumFetcher类的对象,并调用了一些函数并重新启动了对象。

AlbumFetcher *_albumFetcher = [[AlbumFetcher alloc] init];
[_albumFetcher getData];
[_albumFetcher release];

当我在调用某些函数后重新调用该对象时,ASIHTTP请求完成方法未调用且应用程序崩溃。但是,当我没有发布对象时,一切都在完美。我该怎么做

AlbumFetcher *_albumFetcher = [[AlbumFetcher alloc] init];
[_albumFetcher getData];
//[_albumFetcher release]; // now ASIHTTP Request n everything is working fine .....

在AlbumFetcher Class中我有这个功能...

-(void)getData{

    _fullsizeURL = [NSURL URLWithString:@"http://mysite.com/site/alb_iphone"];        

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:_fullsizeURL];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(albumrequestDone:)];
    [request setDidFailSelector:@selector(albumrequestFailed:)];
    [request startAsynchronous];
}
- (void)albumrequestDone:(ASIHTTPRequest *)request{
    // here my code
}
- (void)albumrequestFailed:(ASIHTTPRequest *)request{
    // here my code    
}

所以我出错了,我必须释放对象。

1 个答案:

答案 0 :(得分:1)

在您的情况下,ASIHTTPRequest异步工作,即在另一个线程中。因此,在[_albumFetcher getData]完成后,您的请求就不会完成。

albumrequestDone:requestalbumrequestFailed:request完成之前,您的请求尚未完成。我的建议是[self release]放在这两个函数的末尾。