在我的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
}
所以我出错了,我必须释放对象。
答案 0 :(得分:1)
在您的情况下,ASIHTTPRequest
异步工作,即在另一个线程中。因此,在[_albumFetcher getData]
完成后,您的请求就不会完成。
在albumrequestDone:request
或albumrequestFailed:request
完成之前,您的请求尚未完成。我的建议是[self release]
放在这两个函数的末尾。