Этот блог предлагает хорошее решение для обработки нескольких NSURLConnections: создайте пользовательский класс "CustomURLConnection", который имеет дополнительное свойство tag
.
http://blog.emmerinc.be/index.php/2009/03/02/custom-nsurlconnection-class-with-tag/
http://blog.emmerinc.be/index.php/2009/03/15/multiple-async-nsurlconnections-example/
По сути, он просто добавил свойство tag
к существующему NSURLConnection:
CustomURLConnection.m
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately tag:(NSString*)tag {
self = [super initWithRequest:request delegate:delegate startImmediately:startImmediately];
if (self) {
self.tag = tag;
}
return self;
}
затем, позже в обычных методах загрузки NSURLConnection, вы можете сделать:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Log the connection’s tag
CustomURLConnection *ttttag = (CustomURLConnection *)connection; // **HERE**
NSLog(@”%@”, ttttag.tag);
NSMutableData *dataForConnection = [self dataForConnection:(CustomURLConnection*)connection];
[connection release];
}
Итак, вот где у меня проблемы.Как я понимаю, вот как это происходит:
- Я создаю «соединение + тег»
- Первый фрагмент кода, который я разместил выше, создает обычное «соединение» (нет
tag
), которая в конечном итоге вызовет обычные методы NSURLConnection, такие как connectionDidFinishLoading
.Что происходит с tag
в этот момент? - В методе
connectionDidFinishLoading
я могу преобразовать соединение обратно в «connection + tag», а затем найти информацию об отсутствующем теге, который был отброшен,Как?
Может быть, я просто запутываю себя, но кажется, что tag
был отброшен, когда он начинается по обычному пути NSURLConnection
.Но затем, преобразовав его в подкласс, я снова могу восстановить свойство tag
.Где он жил / уехал в это время?
Может ли кто-нибудь с лучшим пониманием наследования объяснить мне это?