我目前正在編寫一個從影片剪輯中提取幀的應用程序。我設計了它,以便提取將在單獨的線程上完成,以防止應用程序凍結。提取過程本身需要大量資源,但在模擬器中使用時工作良好。但是,爲iPad構建時存在問題。當我執行另一個動作(我告訴我的AV播放器在抽取幀時播放)時,線程意外停止工作,並且我相信它正在被殺死。線程正在被操作系統殺死
我認爲這是因爲我使用了大量的資源,但並不完全確定。
以下是我的問題: 1.如何判斷/爲什麼我的線程停止? 2.如果真的是過度處理,我應該怎麼做?我真的需要這個行動來實施。
繼承人使用一些代碼即時通訊: 要創建線程:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
我會後你需要, 感謝這麼多的任何信息!
更新 我現在在使用GCD,它爲我填充了線程。但是操作系統仍然會殺死線程。
我確切知道它在什麼時候發生。當我告訴我的[AV播放器播放];它殺死了線程。
這個問題只有在實際的iPad,而不是在模擬器上
如果您不得不問,請嘗試使用更高級別的抽象,例如調度隊列(GCD)或操作隊列(NSOperationQueue)。請參閱[移離線程](http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100- SW8)進行擴展討論,或者查找[GCD](http://stackoverflow.com/questions/7941860/#7941898)或[NSOperationQueue](http://stackoverflow.com/questions/830218/)示例。這是非常有用的東西。 – Jano
你的應用崩潰了嗎?如果是的話,崩潰報告說什麼?你確定AVPlayer是線程安全的嗎?因爲如果您在調用[AVplayer play]並在後臺線程中同時訪問它,那可能是問題所在。 – JeanLuc
您的提取線程是否作爲後臺線程運行?我正在學習Objective-C,但是,如果你能夠將它作爲後臺線程運行,可以幫助不被操作系統殺死。 –