2009-11-18 165 views
0

我必須同時啓動多個進程 - AVAudioPlayer的播放,定時器和文件寫入操作。iPhone - 同時啓動兩個進程

如果我只是在一個方法中寫入它們,它們會一個接一個地執行,所有操作的開始都會有一點滯後。

任何想法?感謝任何幫助。

謝謝。

回答

2

你爲什麼不使用線程?

您可以通過使用容易做到這一點:

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg 

或使用NSOperationNSOperationQueue

查看this question瞭解更多詳情。

注:

  • 如果你,如果你想在另一個線程,你還需要另一個runloop使用計時器使用任何自動釋放類
  • 你需要在你的線程自動釋放池。
  • 小心線程安全。例如,我不知道AVAudioPlayer是否可以在與主線程不同的線程上使用。
  • 我不認爲你可以從的NSOperation
+2

如果你只做了一次,performSelectorInBackground是最簡單的代碼。但是,如果你做了很多,它不是最佳的。我會建議NSOperation路線。 – 2009-11-18 12:54:09

+0

非常感謝你們。 – lostInTransit 2009-11-18 14:11:43

1

添加太多的併發內安排的NSTimer可以在這裏是錯誤的做法。您可能想調查設置定時器並在主線程上播放音頻文件,同時在後臺線程上執行阻止文件寫入調用。這裏的重要概念是避免阻塞主線程中的調用,特別是在處理文件或網絡I/O時。

由於iPhone是單CPU設備,因此您會希望避免創建太多的額外線程,並且多個線程會導致更多的資源消耗。