我正在尝试UIView在远程通知到来时在屏幕上进行5秒的自定义显示.
像这样的代码:
//customView.alpha = 1.0 here
[UIView animateWithDuration:1 animations:^{
customView.alpha = 0.3;
}
completion:^(BOOL finished){
// remove customView from super view.
}];
Run Code Online (Sandbox Code Playgroud)
问题和我需要的
但是有些情况可能会在很短的时间间隔内发出一些通知,其中有几个customView可能同时动画,而另一个可能会覆盖其他通知.
我希望这些动画一个接一个地执行,这样它们就不会发生冲突.
假设但失败了
//(dispatch_queue_t)queue was created in other parts of the code
dispatch_sync(queue, ^{
[UIView animationWithDuration:animations:...];
});
Run Code Online (Sandbox Code Playgroud)
在GCD队列中制作动画后,我得到的结果与我使用的原始代码相同,后者没有使用GCD.动画仍然存在冲突.
顺便说一下,我听说涉及UI的动画或任务应该总是在主线程上运行,但在我的第二个代码中,动画看起来很平滑.为什么?
我正在阅读Apple的文档Concurrent Programming Guide,我认为OperationQueue是一系列操作.该文件说我们在大多数情况下都没有在NSOperationQueue中使用锁.
题
如何使用NSOperationQueue实现读写任务?
何时在NSOperationQueue中使用锁?