我有一個顯示音頻文件列表的UITableViewController,當點擊一個音頻文件時,我推着顯示音頻文件詳細視圖的另一個UITableViewController。該視圖還具有「下載」按鈕和UIProgressIndicator視圖。實現帶有進度視圖的iOS下載管理器的最佳實踐
我有一個下載管理器類(實施爲一個單身),負責下載文件。它的下載方法需要一個被更新下載進度的塊。我正在使用它來更新UIProgressIndicator視圖。這可以正常工作,直到你離開細節視圖控制器,並在文件仍在下載的時候再回來。當然,前面指定的進度塊仍然可用,但其中引用的UIProgressIndicator視圖不是,因此不再更新。
我想知道,如果重新進入詳細視圖控制器(viewDidLoad)時重新設置塊或者如果基於塊的方法不適合這種情況是明智的想法?也許使用KVO會更好?
有什麼建議嗎?
謝謝!
是的,VC的壽命是最重要的部分。我經常通過下載器代碼發送NSNotifications來解決這個問題。它的性能和易於實現,並提供一個鬆散耦合的系統。 – Tobias
此外,如果您想使用KVO +塊,請選擇Block-KVO https://github.com/iMartinKiss/Block-KVO –
感謝您的洞察!我使用了KVO方法,它使代碼更容易理解,並且不易出錯......一旦我發現observeValueForKeyPath不一定在主線程上執行,並且必須拋出dispatch_async以避免崩潰時更新進度指示器視圖。 –