Я использую следующий код для отображения номера страницы, когда пользователь переключает страницы в моем приложении для iPad.Номер должен отображаться в красивой прозрачной серой панели (аналогично сообщению «Build Succeeded» в XCode).Тем не менее, изображение отображается только около 5% времени.(Я еще не добавил код для размещения числа на панели).Сообщение NSLog()
появляется каждый раз.Я также установил точку останова и прошел через нее, и вызывается код UIImageView
.К сожалению, я не могу войти в структуру, чтобы увидеть, что она делает.
Используемые переменные - все локальные или постоянные, поэтому я сомневаюсь, что это как-то связано с состоянием гонки.Кроме того, я могу подождать несколько минут между щелчками мыши и не получить изображение, или быстро нажать кнопку и получить несколько изображений в стопке (они прозрачные, поэтому легко заметить стопку).
Я попытался запустить setNeedsDisplay
на self.view
после addSubview:
(хотя я вполне уверен, что addSubview:
делает это), но это ничего не сделало.
Вызов displayPageNumber:
напрямую, без потоков, нене заставлять это появляться последовательно либо.
Есть идеи?
#define PageDisplayTime 0.5
#define PageDisplayImageName @"PageIndicator.png"
#define PageDisplayImage [UIImage imageNamed: PageDisplayImageName]
...
[NSThread detachNewThreadSelector: @selector(displayPageNumber:)
toTarget: self withObject: index];
...
- (void) displayPageNumber: (NSNumber*) _pageIndex
{
NSLog(@"Page Number: '%d'.", [_pageIndex integerValue] + 1);
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
UIImageView* glassPaneView = [[UIImageView alloc] initWithImage: PageDisplayImage];
glassPaneView.center = CGPointMake(300.0, 300.0);
[self.view addSubview: glassPaneView];
[NSThread sleepForTimeInterval: PageDisplayTime];
[glassPaneView removeFromSuperview];
[glassPaneView release];
[pool release];
}