NSMutableURLRequest上的内存管理

时间:2012-05-22 05:23:37

标签: iphone

我是iPhone开发的新手。我的问题是关于内存管理 这是我的代码:

- (void)asynchronousRequestServerWithXMLPost:(NSString *)urlAddress PostData:(NSString *)postContent {

urlAddress = [self encodeStringForURL:urlAddress];
theRequest = [[[NSMutableURLRequest alloc] init]autorelease];
[theRequest setURL:[NSURL URLWithString:urlAddress]];
if([postContent length] > 0) {
    [theRequest setHTTPMethod:@"POST"];
} else {
    [theRequest setHTTPMethod:@"GET"];
}



NSData *theBodyData = [postContent dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[theRequest setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *postLength = [NSString stringWithFormat:@"%d", [theBodyData length]];
[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPBody:theBodyData];    

[NSThread detachNewThreadSelector:@selector(sendSyncRequest) toTarget:self withObject:nil];

}

我在这些方面遇到了泄漏:

theRequest = [[[NSMutableURLRequest alloc] init]autorelease];
[theRequest setURL:[NSURL URLWithString:urlAddress]];
NSData *theBodyData = [postContent dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[theRequest setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];

如果有人可以提供帮助,请帮助我。 感谢你。

1 个答案:

答案 0 :(得分:0)

我猜这个线路正在创建你的泄漏:

urlAddress = [self encodeStringForURL:urlAddress];

我需要看看你的encodeStringForURL的代码,但我猜你是否在没有自动释放的情况下将其传回去。此外,我不会将该方法的结果分配给您的参数变量,然后您将丢失对该参数的引用。你应该做这样的事情:

NSString *encodedUrlAddress = [self encodeStringForURL:urlAddress];

然后在调用URLWithString时使用encodedUrlAddress。