我有一個HTTP POST連接方法如下圖所示:Objective-C的HTTP連接 - 自動釋放沒有游泳池 - 剛剛泄露
request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:method];
[request setValue:contentType forHTTPHeaderField:@"Content-Type"];
[request setValue:@"DataType" forHTTPHeaderField:dataType];
[request setValue:[NSString stringWithFormat:@"%d", [data length]] forHTTPHeaderField:@"Content-length"];
[request setHTTPBody:[data dataUsingEncoding:NSUTF8StringEncoding]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
response = nil;
NSError *error = [[NSError alloc] init];
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
[request release];
result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
responseCode = [response statusCode];
[error release];
if(responseCode == 200) {
[self connectionCompletedHere];
}
else
{
[self connectionFailedHere];
}
它工作正常,但即時得到控制檯消息像__NSAutoreleaseNoPool():對象0x62c3b80類NSURL autoreleased沒有到位 - 只是泄漏。
使用泄漏的工具,我已經把範圍縮小到2線,是造成泄漏:
[[NSURLConnection alloc] initWithRequest:request delegate:self];
和
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
我在做什麼錯?
在此先感謝
在調用此方法的代碼中,您的autorelease池在哪裏? – Mark
事情是我沒有一個autorelease池 – John
這是錯誤所說 - 你需要有一個 – Mark