将后台线程频繁更新的数据源与 GUI 主线程同步的最佳方法是什么?
我应该在每个方法调用周围放置一个 pthread 互斥体吗? 这对我来说似乎也很重。
编辑:我正在寻找 10.5 解决方案
最佳答案
您始终可以在主线程上更新模型和 TableView 。 NSObject 中有像performSelectorOnMainThread:withObject:waitUntilDone:这样的函数,可以让你轻松地在主线程上执行函数调用。所以你可以用以下方法更新你的模型:
[model performSelectorOnMainThread:@selector(addObject:) withObject:newObject waitUntilDone:YES];
然后,用以下内容更新您的表格 View :
[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
如果您需要传递多个对象,事情会变得更加复杂,因为这样您就需要使用调用,但我发现这些函数大多数时候都可以使用。
关于multithreading - 从后台线程更新 NSTableView 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3906322/