2013-10-21 91 views
0

XPC服務不是作爲一個單獨的目標,但一個內置的類,在app.All的例子,我在網上看到有不同的目標,使一個XPC服務工具,並將其複製到App資源文件夾支持實現偵聽器代理傳入連接。有沒有辦法像我想要的那樣做?XPC在Mac OSX上實現

+2

使用XPC的整點是創建具有不限於它們的功能代碼分開二進制文件,將它們分配有限的權限,並通過進程間通信彼此通信。我不知道是否可以在單個二進制文件中使用任何XPC apis,但是爲什麼還要打擾XPC,除非您打算將應用程序的組件分開? – BergQuester

+1

XPC正在處理一個單獨的過程。如果你沒有單獨的流程,那麼你有更好的溝通方式......通知,科沃,自定義委託等。 –

+0

只是爲了糾正@BergQuester。運行XPC服務的默認方式是通過二進制,但它們可以包括幾個庫等等...... 99.9999%的時間我從來不必擁有單獨的二進制文件(除非許可證要求我)。 –

回答

0

沒有沒有..對不起,是生硬,破壞你的週末。

XPC的作爲服務運行的東西,即

YouApp.app 
    Contents 
    XPCServices/ 
      SomeService.xpc 

不要讓「XPC」擴展騙你,它指出,但一個「應用程序」把它在一般用語。

當「YouApp.app」火了,launchd會(大爸爸,讓您的Mac TIC)被通知並調查開始。

launchd之所以如此挑剔(libxpc)的原因是因爲它們運行在低級別並可能有害,但是......因爲它們運行在允許級別,它們非常糟糕並且完成他們的工作有效率的。

一個很好的例子是初學者上手是:

https://developer.apple.com/library/mac/samplecode/SandboxingAndNSXPCConnection/SandboxingAndNSXPCConnection.zip

基本上,有1個應用程式和2個XPC服務。

且流程如下:

1)應用程序會調用 2)的launchd(除其他事項外授權XPC服務運行) 3)應用要求一個服務下載的東西從互聯網上你可以在URL中輸入 4)該服務下載它,將其保存在所有服務(和應用程序)也可以訪問的位置,即應用程序組。 5)然後,應用程序要求其他服務「壓縮」它。

就是這樣。

它確實需要一段時間來解決在第一,而最令人沮喪的事情是代碼簽名。

只是一個預警。如果你想讓它運行得很好,你可能會終止代碼而不是讓XCode進行編碼。

另一件值得留意的事情是「計劃」。請確保您有正確設置XPC調試設置或它只會出現像空話所有

最後發生的事情,控制檯是你的朋友:D保持它的調試XPX時打開。