【发布时间】:2013-08-23 01:08:16
【问题描述】:
我试图消除在主线程上分配 AVPlayer、AVPlayerItem 和 AVURLAsset 时发生的一些主线程性能问题。有没有人有将这些对象的分配/释放移动到后台线程的经验?同样,AVPlayer 的 currentItem 是否可以设置在后台队列中?
【问题讨论】:
标签: ios multithreading avfoundation avplayer
我试图消除在主线程上分配 AVPlayer、AVPlayerItem 和 AVURLAsset 时发生的一些主线程性能问题。有没有人有将这些对象的分配/释放移动到后台线程的经验?同样,AVPlayer 的 currentItem 是否可以设置在后台队列中?
【问题讨论】:
标签: ios multithreading avfoundation avplayer
以下肯定会影响滚动性能
我尝试从后台线程分配 AVPlayer,但是,AVFoundation 将切换回主线程并从主线程执行分配/初始化。与播放/暂停相同。
我在后台线程上解除分配 AVPlayer/AVPlayerItem 取得了一些成功。基本上,您需要从后台线程中清除对 AVPlayer 的最后引用。
【讨论】:
一般来说,如果类文档中没有记录它是线程安全的,则不应跨多个线程使用该类的对象。
更重要的是,虽然在主线程上做更少的事情有好处,但分配AVPlayer、AVPlayerItem 和AVURLAsset 实际上永远不会成为您需要担心的瓶颈。相反,您应该运行 Instruments 并找到真正的性能问题,然后专注于这些问题。
【讨论】: