如何确保我的函数仅在主线程上运行?它更新UI元素。

这样的功能是否被认为是“不好的”?

-(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];
}

最佳答案

这可以。您也可以使用GCD在主线程上执行代码。

checkout 此SO帖子。

GCD to perform task in main thread

关于iphone - 确保函数仅在主线程上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7852737/

10-09 01:48