2010-10-09 58 views
0

我做了一个应用程序,点击艺术家的图像播放歌曲(见附图)。每个艺术家图像都是在按钮上实现的,点击此按钮时,会首先调用一个函数,然后播放该歌曲。我在一个线程中传递了这个方法(函数),但问题是每当我点击艺术家的图像(按钮)时,新线程开始运行,然后多个歌曲开始同时播放。如何使用“NSOperation和NSOperationQueue”,以便一次只能播放一首歌曲。请帮忙。如何使用NSOperation和NSOperationQueue

在此先感谢

alt text

回答

2

NSOperationNSOperationQueue不会直接解决您的问题。

如果我追求一个死简单的方法,我会说有一个方法startPlaying:,其参数是要播放的歌曲在全球AudioPlayer对象(但表示需要; URL,NSData的,无论你需要)。

在这种方法中,我会停止播放当前播放的任何内容并开始新的曲目。

如果我没有记错,我认为你甚至不需要一个线程;音频API通常非常擅长在后台处理播放。

在任何情况下,如果您确实需要线程,那么我会将该线程隐藏在我的AudioPlayer对象中,并让它负责告诉音乐停止/开始在所述线程中播放。可以使用某种类型的操作 - 操作或GCD - 是的。

+0

早些时候我也在做同样的事情,但问题是当我点击按钮(开始下载歌曲然后播放它)时,我的UITable变得静止不变,直到歌曲下载完成,它仍然处于该状态。所以我把下载放在一个单独的线程中。从这一点开始,问题就开始了,因为正如我之前所说的,每次点击按钮创建的新线程以及所有歌曲开始同时播放时。这就是为什么我使用NSOperation,以便下载可以在队列中发生,而不是同时发生。请告诉我一些在您看来有这一点的解决方案。谢谢 – Developer 2010-10-10 04:53:42

相关问题