问题描述
我正在编写一个 VideoPlayer()
类,该类具有 start()
和 stop()
函数来启动给定视频的播放。 VideoPlayer()
的每个实例管理一个视频
start()
和 stop()
函数是异步的,我通过成功/失败的委托得到通知。此委托由第三方 SDK 完成。
class VideoPlayer {
func start() {
// Async call
}
func stop() {
// Async call
}
// Callback from third party library with status
func videoDidStart(view: UIView) {
// Notify clients
}
func videoDidStop(stopped: Bool) {
// Notify clients
}
}
我有客户调用 start()
和 stop()
函数,但有时碰巧他们会快速连续调用 start/stop。这会导致意外行为。
例如,如果客户端在上一次调用 start()
之前调用 stop()
,视频将不会播放。
理想情况下,客户端会等到我发送通过代表收到的成功/失败通知。
当然,这不会发生,我的任务是让 VideoPlayer()
类管理 start()
和 stop()
之间的不平衡,并将所有调用排队,以便一切按顺序执行。
我希望 VideoPlayer()
类确保每次 start()
和 stop()
之间出现不平衡时,每个 start()
都与一个 stop()
匹配并且将流氓调用放入队列中,并在解决不平衡问题后执行它们。
我如何管理这样的事情?我相信我需要使用 Operations
与 start()
和 stop()
之间的依赖关系。我是否应该将 start()/stop()
设为单个操作并将恶意调用排入队列,直到操作完成。
我可以使用其他方法吗?我查看了 dispatch_groups
和 dispatch_barriers
,但不确定它们是否适合我的用例。
任何帮助将不胜感激。谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)