我正在努力寻找一种在 iPhone 应用程序上同步操作的方法。我有三个主要的 NSOperation。
NSInvocationOperation *showSpinner = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(spinnerOn:) object:YES];
NSInvocationOperation *reloadDatasource = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(reloadDatasource) object:nil];
NSInvocationOperation *hideSpinner = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(spinnerOn:) object:NO];
// Add dependency
[reloadDatasource addDependency:showSpinner];
[hideSpinner addDependency:reloadDatasource];
[self.queue addOperation:showSpinner];
[self.queue addOperation:reloadDatasource];
[self.queue addOperation:hideSpinner];
可以看到这三个操作是按顺序正确启动的。但是,正如您可以想象的那样,第一个操作创建一个 UIView 并将其附加到顶部,而最后一个操作应该删除它。
碰巧的是,从图形上讲,操作会立即在屏幕上发生。所以我可以看到表格已经加载,而微调器在屏幕上,或者其他奇怪的不同步的东西。
我知道图形方面的变化发生在主线程上。所以我问我如何修改代码来做它应该做的事情。即:创建微调器、加载数据和删除微调器?有没有一种通用的方法来分离图形操作和数据操作?例如创建两个不同的操作。
谢谢