Цель состоит в том, чтобы «запустить вращающуюся графику в начале viewWillAppear, которая загружает данные перед отображением таблицы», чтобы пользователь не задавался вопросом, почему возникает задержка перед просмотром таблицы. То есть UIActivityIndicatorView был добавлен в окно, и я просто хочу установить альфа, чтобы скрыть / показать его.
Я получаю эту странную ошибку при запуске потока, чтобы убедиться, что представление изображения «вращающиеся шестерни» (tag = 333) отображается перед тем, как перейти к загрузке / вычислению материала в viewWillAppear.
Я не получаю его при каждом вызове [appdel addGearz] и [appdel removeGearz], это происходит как для них, так и случайно. Это может произойти после 2 viewWillAppears или после 15. Если я закомментирую строку, которая устанавливает альфа, все работает.
Типичный видWillAppear выглядит примерно так:
[super viewWillappear];
self.title=@"Products listing"; //and other simple things
[appdel addGearz];
[self getProducts];
[self getThumbnails];
[myTableView reloadData]; //in case view already loaded and coming back from subview and data changed
А вот код, который вылетает, если строки с .alpha не закомментированы
-(void)addGearz {
[NSThread detachNewThreadSelector:@selector(gearzOn) toTarget:self withObject:nil];
}
-(void)removeGearz {
[NSThread detachNewThreadSelector:@selector(gearzOff) toTarget:self withObject:nil];
}
- (void)gearzOn {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[window viewWithTag:333].alpha=1.0;
//
// [[window viewWithTag:333] setNeedsDisplay];
[pool drain];
}
- (void) gearzOff {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[window viewWithTag:333].alpha=0.0;
//
// [[window viewWithTag:333] setNeedsDisplay];
[pool drain];
}
Я использовал чужой код, так что ... что-нибудь очевидное вы можете увидеть? Конечно, я должен быть в состоянии изменить альфа UIViews в потоке? Нужно ли мне "встраивать" альфа-изменение в какой-нибудь код "прекратить перечислять, пока я меняю"?
Я сделал это не сбоем, переместив эту строку альфа-изменения выше выделенного пула или под [сток стока], но затем я получаю много «автоматически выпущенных без пула на месте - просто утечка» - сообщений.
Очевидно, что-то я не понимаю в этом коде потока.