В моем приложении есть основной и вспомогательный поток. Основной поток, как все знают, используется пользовательским интерфейсом. Я использую вторичный поток, чтобы выполнить фоновую загрузку моих представлений.
У меня есть главный контроллер, который я называю фиктивным контроллером. Оттуда я вызываю мой главный контроллер, который находится в ландшафтном режиме.
Итак, в основном, что я должен сделать, так это, когда я поворачиваю свой фиктивный контроллер, я хочу иметь возможность загружать свой основной контроллер ландшафта и наоборот.
Все отлично работает, когда я поворачиваюсь от манекена к основному.
Основной имеет ряд дочерних контроллеров для загрузки, поэтому я поместил этот процесс во вторичный поток, и к тому времени, когда они загружаются, я показываю экран загрузчика.
Пустышка - это обычный контроллер вида, а главный - это модальный контроллер вида.
Теперь проблема.
если пользователь пытается повернуть фиктивную форму -> main, метод rotate запускает инициализацию контроллера основного вида. Но по какой-то причине пользователь меняет свое мнение и в идеале поворачивает обратно форму main -> dummy, переход должен быть плавным, поскольку поток пользовательского интерфейса (mainadad) свободен. Что происходит, пользовательский интерфейс поворачивается обратно. Но поскольку вторичный поток на главном контроллере все еще включен, даже после того, как модальный контроллер dismiss вызван на главном контроллере основным потоком, когда мы вызываем функцию willRotate.
Я читал в различных постах, что мы не можем просто убить вторичный поток, так как мы должны сами что-то делать. Так может кто-нибудь, пожалуйста, проведите меня через код, как мне убить мой вторичный поток и выполнить очистку, прежде чем я вернусь к моей форме вызова .. ??
Это довольно срочно ... пожалуйста, не указывайте на другие темы, потому что я уже посетил их.
Я специально хочу знать, как мне остановить мой вторичный поток, не вызывая сбой.
спасибо.
-(void)viewDidLoad {
[super viewDidLoad];
workingThread = [[NSThread alloc]initWithTarget:self selector:@selector(parseMainTextFile) object:nil];
[workingThread start];
[NSThread detachNewThreadSelector:@selector(addLoader) toTarget:self withObject:nil];
//[self performSelectorOnMainThread:@selector(parseMainMatchTextFile) withObject:nil waitUntilDone:NO];
}