我搜索了很多内容,并阅读了很多关于NSURLConnection的泄漏问题,但是他们都没有给出关于克服这些泄漏的解决方案的明确答案。 我创建了一个异步连接,每次建立连接时,我都会得到一个GeneralBlock-3584泄漏。有时候负责的库被显示为基础[NSThread start]框架。 GeneralBlock-3584的某些实例将CFNetwork HostLookup_Master :: HostLookup_Master(__ CFString const *,InheritEnum < _ExtendedHostInfoType,CFHostInfoType>,__CFHost *,CFStreamError *)作为负责任的框架。 我试图设置NSURLCache大小为0建议的一些。 Howvever,即使这样也行不通。NSURLConnection中的泄漏
这里是我的连接器类的样子:
-(void) connectToUrl:(NSString*)urlStr withDelegate:(id)theDelegate{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
self.delegate = theDelegate;
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[NSURLConnection connectionWithRequest:request delegate:self];
[pool release];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
if(xmlResponse == nil){
xmlResponse = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
}
else{
NSMutableString *temp = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
[xmlResponse appendString:temp];
[temp release];
}
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[self.delegate connectionDidFinish:self];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
[self.delegate connectionDidFail:self];
}
我打电话来此连接器类的connectToUrl:(的NSString *)urlStr withDelegate:(ID)theDelegate方法如下:
Connector *con = [[Connector alloc] init];
[con connectToUrl:urlStr withDelegate:self];
我正在释放委托类的connectionDidFinish和connectionDidFail方法中的'con'。
请为GeneralBlock-3584泄漏提出解决方案。我一直在绞尽脑汁。