我是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"];
如果有人可以提供帮助,请帮助我。 感谢你。
答案 0 :(得分:0)
我猜这个线路正在创建你的泄漏:
urlAddress = [self encodeStringForURL:urlAddress];
我需要看看你的encodeStringForURL的代码,但我猜你是否在没有自动释放的情况下将其传回去。此外,我不会将该方法的结果分配给您的参数变量,然后您将丢失对该参数的引用。你应该做这样的事情:
NSString *encodedUrlAddress = [self encodeStringForURL:urlAddress];
然后在调用URLWithString时使用encodedUrlAddress。