2016-10-21 88 views
4

好吧,我已經瀏覽了所有的論壇和網站,但還沒有找到解決方案,甚至沒有找到解決方案,因爲我們在使用IBDesignables的大型項目中遇到了問題的框架(約30通過Cocoapods或內部)。 Xcode 8.0雖然它在Xcode 7.x中開始。這些框架是Swift和Objective-C的混合體。IBDesignables無法在Xcode中渲染

在Xcode實際的錯誤信息是:

"Failed to render and update auto layout status for XXXX: dlopen(xxxx, 1): Library not loaded: @rpath/YYYY/YYYY.framework" and 
"Failed to update auto layout status: dlopen(xxxx, 1): Library not loaded: @rpath/YYYY/YYYY.framework" 

我們似乎沒有對利用相同框架的各種組合較小的項目的問題。

我已經能夠通過從項目中刪除一些內容來獲取錯誤,以便抱怨不同的庫不加載,所以它似乎與被投訴的實際庫沒有直接關係。 我已經消除-ObjCall_load作爲可能的罪魁禍首,確保他們在哪裏沒有項目或xxconfig文件。

許多框架確實共享相同的依賴關係。諸如AFNetworking,ActionSheetPicker,ReactiveCocoa等,但刪除它們只會移動錯誤。

有沒有其他人看到一個問題IBDesignables不適用於較大的項目?

回答

0

它的解決方法,但似乎正在工作(現在)。我們發現如果我們將$(FRAMEWORK_SEARCH_PATHS)"/Applications/Xcode.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/iphonesimulator"添加到每個吊艙的項目級別。 LD_RUNPATH_SEARCH_PATHS我們可以避免錯誤,沒有明顯的副作用。

這裏是我們的Podfile一個片段:

installer.pods_project.build_configurations.each do |config| 
config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = [ 
    '$(FRAMEWORK_SEARCH_PATHS)', 
    '"/Applications/Xcode.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/iphonesimulator"' 
] 
end