У меня есть базовый архитектурный вопрос о том, как обрабатывать асинхронную загрузку или действительно любую программу, имеющую цепочку событий, и каждое событие не запускается до тех пор, пока не завершится предшествующее событие, как бы долго это ни занимало.
Если я собираюсь загрузить данные, а затем выполнить действие после завершения загрузки, но в то же время я хочу сделать что-то еще (например, показать индикатор прогресса, заставку или что-то еще), имеет ли смысл разработать программу так:
-(void)thisMethodStartsTheDownloading{
//start the download using NSURLConnection (I'm fine with these details)
//show a UIView for a splash screen image or do anything else you want to do
}
-(void)thisMethodRunsWhenDownloadIsFinished{
//hide or remove the splash screen (if applicable)
//do whatever I need to do with the downloaded data
//this method does not run on its own unless called when NSURLConnection is done
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//do whatever I need to do with my downloaded data
[self performSelector:@selector(thisMethodRunsWhenDownloadIsFinished)];
// or [self thisMethodRunsWhenDownloadIsFinished];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
//incrementally appendData as it comes in from the download process
[receivedData appendData:data];
}
Я хочу убедиться, что я понимаю структуру программы, которая переключается между методами при завершении каждого метода.
По сути, я предполагаю, что когда у вас есть цепочка процессов, но каждая часть этой цепочки не может работать, пока не завершена предыдущая цепочка, вы разбиваете свою цепочку на разные методы, как я делал здесь, связывая их друг другу, вызывая следующий в цепочке, когда текущий заканчивается. Это идеальный / стандартный способ сделать это?