2010-12-11 82 views
1

這個問題是根據this如何在不包含需要的框架的情況下構建框架?

TL; DR:我將代碼分解爲框架並創建了一個元框架,該框架包含將用於我的所有框架的代碼(通常是常量和字符串)。

現在,我需要構建框架,但我不想在它們中的每一個框架上都包含元框架,因爲這會導致不必要的代碼膨脹。我怎樣才能讓我的框架知道元框架,以便我可以快速測試它們?不要忘記,它們都將被包含在最終的應用程序中,因此在我創建的每個框架中包含元框架副本都沒有意義。

回答

2

只是讓你的子框架只鏈接到您的元框架,通過不添加元框架將子框架文件拷貝建造階段。
這樣你最終沒有重複的代碼或資源

那麼對於包括你的子框架的一進一出的應用程序(束,不管)執行以下操作:

  1. 鏈接項目目標到兩個,你子框架和你薈萃框架
  2. 添加「複製(框架)文件構建階段項目如果還沒有存在。
  3. 添加兩種,您子框架和你元框架到所述構建階段
  4. (可選)您可能還想將項目依賴的所有項目添加爲依賴項。 (對於你的子項目,這將是你的元計劃,併爲你的應用程序,這將是你的子項目。)
  5. ...
  6. 利潤。

這基本上就是我在DLAppKit.framework,這依賴於我的DLFoundationKit.framework和使用DLAppKit.framework所有的應用程序做。

alt text

+0

這種幫助我。我已經將子框架鏈接到元框架的發佈版本,但它總是會說它找不到框架。然後,我將元框架項目拖入子框架項目,並且瞧,它完美地構建。 – ruipacheco 2010-12-11 23:55:55

+0

恭喜然後!這讓我花了一段時間,當時,);框架可能非常棘手,特別是在加載/安裝路徑等方面。 – Regexident 2010-12-12 15:05:18

0

爲了解答這個問題,我假定您正在使用內置的Xcode目標構建標準的一般框架。如果是這種情況,那麼你的框架包含動態庫,很可能是.dylib文件。任何與這種框架鏈接的代碼在編譯時都不會包含來自所包含庫的代碼,它將在運行時加載框架並解析符號。

這樣做的結果是您不必擔心代碼膨脹;遠離!如果您的子框架依賴於父框架中定義的符號,那麼您需要將它們鏈接到父框架。在某些情況下,你可以用恐怖的方式玩Objective-C元編程來直接解決框架問題,但如果你主要包括常量和字符串的話,可能不會出現這種情況。

相關問題