Рисование UIView с фона NSThread? - PullRequest
0 голосов
/ 28 августа 2009

Я занимаюсь разработкой краски GL.

Для рисования любого объекта я использую реализованный UIView.

Начиная метод краски:

- (void)viewDidLoad {
    ....
    [NSThread detachNewThreadSelector:@selector(paintingObjects) 
                             toTarget:self
                           withObject:nil];
}

- (void)paintingObjects {
    while(1) {
        [NSThread sleepForTimeInterval:2];
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        ImplementedView *tmp = [self view];
        [tmp draw];
        [pool drain];
    }
}

Но это не работает (не рисует объект).

Что здесь не так?

Пожалуйста, помогите мне, ребята.

Заранее спасибо.

1 Ответ

1 голос
/ 28 августа 2009

Все классы пользовательского интерфейса не поточно-безопасны и должны вызываться из основного потока:

- (void)paintingObjects {
    while(1) {
        [NSThread sleepForTimeInterval:2];
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        ImplementedView *tmp = [self view];
        [tmp performSelectorOnMainThread:@selector(draw) withObject:nil waitUntilDone:YES];
        [pool drain];
    }
}

В этом случае вам, вероятно, будет лучше использовать NSTimer.

...