使用操作来管理函数调用之间的不平衡

问题描述

我正在编写一个 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() 匹配并且将流氓调用放入队列中,并在解决不平衡问题后执行它们。

我如何管理这样的事情?我相信我需要使用 Operationsstart()stop() 之间的依赖关系。我是否应该将 start()/stop() 设为单个操作并将恶意调用排入队列,直到操作完成。

我可以使用其他方法吗?我查看了 dispatch_groupsdispatch_barriers,但不确定它们是否适合我的用例。

任何帮助将不胜感激。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)