Make sure function runs on main thread only

Как я могу убедиться, что моя функция выполняется только в основном потоке? Она обновляет элементы пользовательского интерфейса.

Считается ли такая функция "плохой"?

-(void)updateSomethingOnMainThread {
    if ( ![[NSThread currentThread] isEqual:[NSThread mainThread]] )
        [self performSelectorOnMainThread:_cmd withObject:nil waitUntilDone:NO];
    else {
        // Do stuff on main thread
    }
}

Я написал ее так, чтобы избежать наличия второй функции, изначально она была такой:

-(void)updateSomethingOnMainThread_real {
    // Do stuff on main thread
}

-(void)updateSomethingOnMainThread {
    [self performSelectorOnMainThread:@selector(updateSomethingOnMainThread_real) withObject:nil waitUntilDone:NO];
}
11
задан pkamb 5 November 2019 в 03:43
поделиться