我做了一個應用程序,點擊藝術家的圖像播放歌曲(見附圖)。每個藝術家圖像都是在按鈕上實現的,點擊此按鈕時,會首先調用一個函數,然後播放該歌曲。我在一個線程中傳遞了這個方法(函數),但問題是每當我點擊藝術家的圖像(按鈕)時,新線程開始運行,然後多個歌曲開始同時播放。如何使用「NSOperation和NSOperationQueue」,以便一次只能播放一首歌曲。請幫忙。如何使用NSOperation和NSOperationQueue
在此先感謝
我做了一個應用程序,點擊藝術家的圖像播放歌曲(見附圖)。每個藝術家圖像都是在按鈕上實現的,點擊此按鈕時,會首先調用一個函數,然後播放該歌曲。我在一個線程中傳遞了這個方法(函數),但問題是每當我點擊藝術家的圖像(按鈕)時,新線程開始運行,然後多個歌曲開始同時播放。如何使用「NSOperation和NSOperationQueue」,以便一次只能播放一首歌曲。請幫忙。如何使用NSOperation和NSOperationQueue
在此先感謝
NSOperation
和NSOperationQueue
不會直接解決您的問題。
如果我追求一個死簡單的方法,我會說有一個方法startPlaying:
,其參數是要播放的歌曲在全球AudioPlayer
對象(但表示需要; URL,NSData的,無論你需要)。
在這種方法中,我會停止播放當前播放的任何內容並開始新的曲目。
如果我沒有記錯,我認爲你甚至不需要一個線程;音頻API通常非常擅長在後臺處理播放。
在任何情況下,如果您確實需要線程,那麼我會將該線程隱藏在我的AudioPlayer
對象中,並讓它負責告訴音樂停止/開始在所述線程中播放。可以使用某種類型的操作 - 操作或GCD - 是的。
早些時候我也在做同樣的事情,但問題是當我點擊按鈕(開始下載歌曲然後播放它)時,我的UITable變得靜止不變,直到歌曲下載完成,它仍然處於該狀態。所以我把下載放在一個單獨的線程中。從這一點開始,問題就開始了,因爲正如我之前所說的,每次點擊按鈕創建的新線程以及所有歌曲開始同時播放時。這就是爲什麼我使用NSOperation,以便下載可以在隊列中發生,而不是同時發生。請告訴我一些在您看來有這一點的解決方案。謝謝 – Developer 2010-10-10 04:53:42