2011-12-06 63 views
0

請考慮以下情形。音頻流,NSTimer和解析JSON場景

播放音頻流的應用程序。然後是現在播放視圖,其中包含藝術家和歌曲標題,當前歌曲的專輯封面以及製作人名稱,並附有小說明和圖片。所有這些都來自JSON文件。

爲了知道何時JSON文件確實發生了變化,還有一個額外的.crc文件,其中包含上次更改的JSON的時間戳/代碼。當.crc的內容發生變化時,是時候更新JSON了。

所以我有一個NSTimer每10秒觸發並打開一個NSURLConnection,最終返回.crc文件的數據。在connectionDidFinish我檢查代碼是否從前一個更改,如果條件爲真,那麼我加載JSON並最終解析其數據。

我的問題是,如果這個10sec的NSURLConnection定時器對於應用程序來說太多了,請記住有不斷的音頻流播放。當然,當應用程序進入後臺時,計時器會停止。然後,當應用程序進入前臺時,我強制加載JSON以更新視圖並再次啓動定時器。

此外,正在播放的視圖從根視圖控制器分配給self.nowplayingview ivar(僅創建一次),self.nowplayingview被推送到堆棧。這樣,當JSON發生變化時,我可以從根視圖更新正在播放視圖。

您是否認爲我應該每次創建並推送「正在播放」視圖?

在此先感謝。

+0

你會更好的使用NSThread而不是NSTimer,我認爲,以便更新JSON的代碼仍然在後臺執行。 –

+0

@ RichardJ.RossIII - 謝謝我會嘗試NSThread,看看它是怎麼回事。 – Dimitris

回答

0

爲什麼不只用新信息修改現有的正在播放視圖?我也同意這可能要麼在後臺線程中完成(如Richard Ross上面提到的那樣),要麼確保這個調用是異步完成的,這樣它就不會導致應用程序/接口變得遲鈍和不響應。

+0

這兩個對.crc和json文件的調用都是異步的。我會嘗試改用NSThread而不是NSTimer來看看它是如何發生的。謝謝。 – Dimitris