Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 独立UIViewController上的多个AVP播放器_Ios_Objective C_Uiviewcontroller_Avfoundation_Avplayer - Fatal编程技术网

Ios 独立UIViewController上的多个AVP播放器

Ios 独立UIViewController上的多个AVP播放器,ios,objective-c,uiviewcontroller,avfoundation,avplayer,Ios,Objective C,Uiviewcontroller,Avfoundation,Avplayer,我有多个avplayer,每个播放器都在不同的UIViewControllers上播放不同的歌曲。 每当我播放另一个时,我需要暂停一个AVPlayer(否则音频重叠)。 我想让用户在后台播放音乐的同时浏览应用程序,因此在viewdide:(BOOL)animated上暂停AVPlayer,将不起作用。 访问每个单独的AVPlayer控件的最佳方式是什么?您可以采用以下几种方式: 创建一个共享单例对象,该对象具有引用每个AVPlayer的弱属性。这样你就可以在任何地方控制它 或 当您希望在其他视图

我有多个
avplayer
,每个播放器都在不同的
UIViewControllers
上播放不同的歌曲。
每当我播放另一个时,我需要暂停一个
AVPlayer
(否则音频重叠)。
我想让用户在后台播放音乐的同时浏览应用程序,因此在
viewdide:(BOOL)animated
上暂停
AVPlayer
,将不起作用。
访问每个单独的
AVPlayer
控件的最佳方式是什么?

您可以采用以下几种方式:

创建一个共享单例对象,该对象具有引用每个AVPlayer的弱属性。这样你就可以在任何地方控制它


当您希望在其他视图控制器上控制AVPlayer时,请使用NSNotificationCenter发送通知。如果你想控制很多AVPlayer,这可能会变得很麻烦。

在我看来,只有一个AVPlayer的单身汉很好地解决了这个问题。这样,您可以保证播放另一首歌曲时必须停止前一首歌曲。然后,在AVPLayerSingleton中,您有一个名为avPlayer的私有财产。您可以定义两种方法:

- (void)createPlayerWithSong:(NSString *)currentSong;
- (void)destroyPlayer

然后,在createPlayerWithSong中,您可以检查是否已经创建了avPlayer并销毁它,然后为每首新歌创建一首新歌曲。

这并不完全是您想要或需要的,但检查此示例,它可能会提供一些指导:销毁avPlayer是否会阻止我继续我停止的歌曲?我想暂停它,而不是杀死它。是的,它会的。您可以节省您停止或拥有更多AVP播放器的时间。然而,我仍然相信单身是一个不错的选择。