Я установил nsurl, который захватывает данные из http. Когда я запускаю инструмент, он говорит, что у меня есть объект NSFNetwork.Неисправность NSURLConnection?
и как мне освободить theConnection in (void) ButtonClicked? или он будет выпущен позже?
- (void)ButtonClicked {
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:KmlUrl]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:20.0f];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
// receivedData is declared as a method instance elsewhere
NSMutableData *receivedData = [[NSMutableData data] retain];
[self setKMLdata:receivedData];
} else {
// inform the user that the download could not be made
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
// append the new data to the receivedData
// receivedData is declared as a method instance elsewhere
[KMLdata appendData:data];
NSLog(@"didReceiveData");
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// release the connection, and the data object
[connection release];
[KMLdata release];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
// release the connection, and the data object
[connection release];
// receivedData is declared as a method instance elsewhere
[KMLdata release];
}
Призывая autorelease будет работать, она не будет выполнена в тех случаях, когда делегат выпущенными до подключения освобождается. Лучше всего было бы назначить соединение переменной экземпляра и высвободить + nil, когда это не понадобится. Если соединение ivar по-прежнему назначается, когда объект деаллокируется, перед тем, как освободить соединение, перед тем, как освободить соединение, необходимо установить нуль делегата. – rpetrich
@ rpetrich Я согласен с тем, что ваше предложение более полно, однако было ясно, что его вопрос показал основное непонимание управления памятью на iPhone, и поэтому я хотел дать ему концептуально более легкое решение. – h4xxr
@ rpetrich, можете ли вы привести пример кода. Я пытался решить эту проблему по-разному и все еще испытываю утечку. – Jordan