NSTimer зависает при прикосновении к UIScrollview - PullRequest
1 голос
/ 30 мая 2011

Я программирую приложение на основе миди. Чтобы получить точную синхронизацию миди-часов, я использую NSTimer. Но, прокручивая / касаясь подпредставления, NSTimer зависает. Я пытался запустить таймер в Subview, но та же проблема. У кого-нибудь есть идеи?

Вот код моего ViewController:

-(void)timerPlay{

    midiclock = [NSTimer scheduledTimerWithTimeInterval:0.5/24 target:self selector:@selector(clocksignal)  userInfo:nil repeats:YES];
}

-(void)clocksignal{
    beatClock ++;

    if (beatClock == 1){
        const UInt8 clock[2] = { 0xF8, 0xF9};
        [midi sendBytes:clock size:2];
    }

    if (beatClock == 2){
        const UInt8 clock[2] = { 0xF8, 0xF9};
        [midi sendBytes:clock size:2];
    }

    .......
    if (beatClock == 24){

        const UInt8 clock[2] = { 0xF8, 0xF9};

        [midi sendBytes:clock size:2];
        beatClock = 1;

    }
}


- (void)viewDidLoad {
    SubView = [[SubView alloc] initWithNibName:@"SubView" bundle:nil];
    [scrollView addSubview:matrixView.view];
    ......
}

1 Ответ

1 голос
/ 30 мая 2011

Я думаю, это потому, что ваш таймер выполняется в основном потоке, например, в пользовательском интерфейсе, поэтому ваш таймер должен ждать, пока основной поток не станет "бездействующим", чтобы выполнять какие-то действия на нем. Поскольку вы не обновляете пользовательский интерфейс, вам не нужно выполнять код в основном потоке.

Одним из решений является создание нового потока (NSThread detachNewThread) и выполнение цикла здесь или использование GCD вместо использования NSTimer

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