2010-07-10 54 views
1

這個問題來源於此另外一個我剛纔問:Calling custom Objective-C from a pyobjc application?如何從iPhone項目中的代碼編譯OSX Cocoa框架?

我想從它的服務器端組件在我的iPhone應用程序,它運行在OSX應用程序邏輯的重新使用一小部分。根據我在其他問題中被告知的情況,看起來我需要從這個小小的應用邏輯中爲iOS和OSX編譯一個「框架」。

如果我們假設我能夠將此框架中的所有代碼隔離爲一個沒有其他非Cocoa依賴項的.h/.m對文件,那麼最簡單的方法是什麼XCode爲每個架構構建這個框架並避免在服務器上對所有這些邏輯進行雙重編碼?

我嘗試添加一個新的OSX的框架構建的目標,我的iPhone項目,但這個並沒有得到很遠的XCode很快撈出用:

目標指定產品類型「com.apple.product -type.framework」,但有在沒有這樣的產品類型‘iphonesimulator’平臺

任何幫助非常讚賞,因爲我目前重複數據刪除技術,實現讓事情向前發展,但這顯然漂亮成爲一個巨大的當實現稍微不同步時浪費時間和錯誤來源。

+0

我不確定我明白你想要做什麼。你將不得不編譯你的代碼兩次,一次是OS X,一次是iOS;這是沒有辦法的。爲什麼你不能只有兩個單獨的XCode項目包含相同的源文件? – 2010-07-10 23:35:20

+0

嗨亞當 - 是的,我知道我將不得不爲兩種不同的體系結構(OSX/iOS)進行編譯,但我只是試圖找到最簡單的方法(就正在進行的開發和調試而言)。我將嘗試製作一個新的XCode項目,它只是爲OSX生成框架並僅包含相關文件,但我希望能夠從一個XCode項目中完成所有工作。不知道這是否會工作,因爲不知道是否可以指示XCode只將項目文件的一個子集編譯到特定目標中... – glenc 2010-07-11 11:32:34

+0

因此,看起來像這種方法已經工作,我創建了一個單獨的XCode項目來編譯OSX的特定類和我現在可以通過objc.loadBundle()將它們加載到服務器上。謝謝你的幫助! – glenc 2010-07-11 15:16:50

回答

0

亞當對我原來的問題的評論回答了這個問題。雖然仍然有興趣看看是否有辦法通過一個XCode項目來完成,但我現在的解決方案已經足夠滿足我想實現的目標。

1

取決於您在自定義班級中使用的內容。如果您沒有使用UIKit/AppKit中的任何內容,那麼該類可能在任一平臺上都能很好地運行,否則,您必須使用目標條件幷包含專門爲這兩個平臺編寫的單獨代碼。

您可以在一個Xcode項目中擁有多個目標,它們的Base SDK分別爲Mac/iDevices設置。

+0

嗨Evadne,是的,沒有什麼來自類中的AppKit,它需要有條件的#includes才能使它在OSX上工作。我嘗試在XCode中設置額外的目標(體系結構= 32/64位通用)和(Base SDK =當前Mac OS),但仍然在我的原始文章中提到了錯誤。在項目配置中是否還有其他需要完成的工作,以便在您可以想到的單個XCode項目中完成此項工作? – glenc 2010-07-11 11:28:19

相關問題