2016-04-14 77 views
2

我正在研究一個包含音樂和聲音效果的應用程序,所以我正在使用AVPlayer,而且我遇到了一個似乎只對模擬器有效的奇怪的bug。Swift AVPlayer在模擬器上拋出異常

因此,在應用程序的屏幕之一中,有音樂在後臺播放。所以在這個屏幕上,我安裝了AVPlayer並開始播放歌曲。這是昨天做工精細,但運行在模擬器上的應用程序時,今天,這個異常被拋出

enter image description here

但是應用程序沒有崩潰,如果我打繼續按鈕幾次,應用程序繼續運行。但是它在模擬器上進行調試非常令人沮喪,因爲每當我打開這個屏幕時都會發生這種情況。設備上不會發生此問題。

什麼是陌生人是,我有一個類似的問題昨天在這個應用程序與AVPlayer。我無法弄清楚問題出在哪裏,於是我開始逐個將代碼複製到一個新的項目中,直到整個事情被複制,並且這個問題沒有發生。那麼今天呢,這個問題又開始了。如果我將這些代碼複製到另一個項目中,它在模擬器上可以正常工作,但最終會再次彈出此問題。

是否有其他人在AVPlayer模擬器上體驗過這些類型的問題?有什麼辦法可以解決這個問題嗎?任何幫助,將不勝感激

編輯:以防萬一,這裏是代碼AVPlayer是如何設置

var songPlayerItem : AVPlayerItem? 
    var songPlayer : AVPlayer? 

    func startSong() 
    { 
     let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource(song!.id, ofType: "mp3")!) 
     songPlayerItem = AVPlayerItem(URL: url) 

     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.itemDidFinishPlaying(_:)), name: AVPlayerItemDidPlayToEndTimeNotification, object: songPlayerItem) 
     songPlayer = AVPlayer(playerItem: songPlayerItem!) 
     songPlayer?.play() 
    } 

func itemDidFinishPlaying(notification : NSNotification) 
    { 
     print("SongFinished") 
    } 
+0

你有任何機會在Xcode中啓用任何異常斷點嗎?如果你這樣做,他們只會拋出ObjC錯誤或C++錯誤? – pbodsk

+0

我有AllExceptions轉折點。解決這個問題似乎可以解決問題。我通常總是有這個突破點,因爲如果應用程序中的某些內容在我運行應用程序時崩潰,它會使調試更快。但爲什麼這會導致這個異常問題呢?這是AVPlayer的一個已知問題嗎? – AdamM

+0

我有同樣的問題,並設置AllExceptions只拋出ObjC爲我解決它。這樣,如果我導致了錯誤,它仍然崩潰,但如果在C++代碼中存在錯誤,則不會崩潰。我不知道爲什麼會發生異常,雖然...對不起 – pbodsk

回答

4

由於可以在評論中可以看出上面的「問題」是@AdamM有一個例外當在AVPlayer某處發生錯誤時觸發的Xcode中的斷點。

解決方法是設置異常斷點只在目標C錯誤停止如在此圖像中

enter image description here

這仍然沒有回答爲什麼在第一時間產生錯誤的情況,但至少你現在不再停止每次錯誤發生。