Обновить вид с дисплеем и setNeedsDisplay не работает - PullRequest
1 голос
/ 11 ноября 2010

У меня проблемы с обновлением объекта customView во время симуляции.Окно появляется после завершения симуляции.Я бы хотел, чтобы он обновился во время симуляции.Для этого я использую setNeedsDisplay:YES, а также пробовал display.Однако все это не работает для меня.У кого-нибудь есть идеи, как мне это сделать?Как вы можете видеть ниже, я попытался создать новый поток для обновления, а также с помощью NSOperations.Благодарен за помощь!

//Run simulation
    for (int iteration=0; iteration<numberOfIterations; iteration++){
        //NSInvocationOperation *update = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(updatePopulation) object:nil];
        //NSInvocationOperation *draw = [[NSInvocationOperation alloc] initWithTarget:view selector:@selector(redraw) object:nil];
        //[draw addDependency:update];
        //[queue addOperation:update];
        //[queue addOperation:draw];
        [NSThread sleepForTimeInterval:0.01]; //to make it easer to see..
        [self updatePopulation];
        //[view redraw];
        [NSThread detachNewThreadSelector:@selector(redraw) toTarget:view withObject:nil];
        //[self performSelector:@selector(updatePopulation) withObject:nil afterDelay:1];
        //[view performSelector:@selector(redraw) withObject:nil afterDelay:1];
        //Save segregation
        if (iteration%(numberOfIterations/100) == 0) {
            printf("hej\n");
        }
    }

в классе моего зрителя:

- (void) redraw {
    //[self setNeedsDisplay:YES];
    [self display];
}

1 Ответ

3 голосов
/ 11 ноября 2010

Похоже, вы пытаетесь нарисовать на рабочем потоке.

Насколько я знаю, это не поддерживается.

Чтобы решить эту проблему, необходимо переместить моделирование в рабочий поток, а затем использовать executeSelectorOnMainThread: , чтобы вызвать перерисовку в основном потоке. Я нахожу эту статью о многопоточности в какао необходимой для чтения при попытке реализовать многопоточные приложения какао.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...