2010-03-18 76 views
0

我在我的可可項目中使用非常有用的ID3框架。有一件我想修改的小東西,但我似乎無法獲得我爲應用於構建的框架所做的更改。如何正確修改自定義可可框架?

框架提供的源代碼配備了一個Xcode項目,所以我已經打開,最多和testings清酒在把一個NSLog(@"hello");。這是definetly在一個地方,它就會被調用,還有其他NSLog()電話顯示的框架不僅僅是控制檯輸出被抑制。

要構建一次修改的框架,我首先清理了構建文件夾,確保它實際上刪除了文件,然後構建它。然後在我使用框架的Xcode項目中,我刪除了舊的引用,並在剛剛構建的框架中添加了一個新引用。用新建的框架運行我的項目不會調用修改的框架代碼。我已經嘗試使用作爲框架Xcode項目一部分的開發和部署構建。

我的直覺是框架代碼編譯成的可執行文件以某種方式被緩存。但是因爲我對框架的工作還不熟悉,所以我不太確定在哪裏尋找。

回答

1

有沒有緩存在Mac OS X中的可執行文件或框架要調試這是怎麼回事,有幾個有用的技巧:

在命令行中使用otool -L <path_to_your_executable>,以瞭解負載命令(其中將庫和框架加載到可執行文件中)。嘗試找到ID3框架並檢查路徑。如果它以@executable_path開頭,框架必須複製到可執行文件的包裝器中。

要真正看到加載了哪些庫,並將環境變量DYLD_PRINT_LIBRARIES設置爲YES。您可以從Xcode內(在可執行文件設置中)或從終端執行此操作。

您將在dyld加載時看到庫及其路徑。

我的直覺是,你的可執行文件仍然從你的可執行文件的應用包裝器或其他可能安裝的地方加載一箇舊的框架。嘗試清理你的項目(使用框架的項目,而不是框架本身)。

+0

對,我無法讓otool工作出於某種原因,但DYLD_PRINT_LIBRARIES非常有用,並且表明它正從Library/Frameworks /中加載。它似乎堅持在那裏(即如果我從那裏刪除它不會編譯),但我可以簡單地複製框架的新構建,並且它工作正常。非常感謝你。 – Septih 2010-03-18 11:04:25

+0

它希望從那裏加載框架的原因是它是框架'INSTALL_PATH'構建設置。使用'otool -L/Library/Frameworks/ID3.framework/ID3'應該顯示框架安裝路徑(第一行輸出)。您並不總是必須在那裏複製框架,您可以使用框架構建目錄中的那個。爲了讓你的主要可執行文件加載這個框架,還有另一個環境變量:'DYLD_FRAMEWORK_PATH'。請參閱'man dyld' – 2010-03-18 11:12:55