2013-05-31 35 views
1

我正在使用QuickTime API,需要在後臺執行一些冗長的操作(如小時)。不幸的是,它並不是多線程友好的,所以我正在退回來在單獨的進程中執行任務,因此所有與QuickTime相關的調用都可以在其主線程中發生。如何從可可應用程序啓動並與無窗口和無控制檯進程進行通信?

啓動後,我需要一種獲取反饋的方法,因爲操作可能需要很長時間。

我不確定如何做到這一點,特別是:

  • 應該在單獨的進程被編譯成另一個可可的應用程序或命令行工具?
  • 如何從主可可應用程序啓動它?
  • 如何定期從中獲取對象以獲取狀態信息?
  • 如何確定何時完成?
  • 如何避免在調用時顯示窗口/控制檯?
  • 如何讓它成爲.app包的一部分,以便它不會作爲單獨的可執行文件顯示給用戶?

這些實際上是6+個問題,但它們非常相關且非常具體,我認爲任何需要啓動外部進程(而不是產卵工作線程)的人都可以從他們的答案中受益。通用代碼示例將非常有幫助。

回答

1

如果可能,然後在命令行工具或其他形式的無GUI應用程序中實現該功能。對於Cocoa應用程序,可以阻止它們出現在Dock或Force Quit對話框中,但是命令行工具是一個單獨的二進制文件,無論如何,這可能是更好的方法。

在啓動工具方面,NSTask & NSPipe是您在這項工作中的朋友。這個工具肯定可以保存在你的主應用程序的bundle中,在Resources目錄中或其他地方,然後在需要時啓動。您可以使用管道來回通信。

我沒有任何的示例代碼交出,它已經很長一段時間,因爲我已經沒有機會使用這兩種類的,所以我可以給的信息是有限的,但它應該是足夠的點你在正確的方向。

相關問題