我怎么在Object-C
中用Swift
如果你想編譯一個(gè)應(yīng)用程序并且這個(gè)應(yīng)用程序包含Swift
文件铜邮,Swift
支持的標(biāo)準(zhǔn)庫已經(jīng)添加到Bundle
里面提澎。你可以隨時(shí)可以在終端運(yùn)行otool -L
查看一個(gè)產(chǎn)品包含的FrameWork
透典。這個(gè)可以顯示你的產(chǎn)品依賴的靜態(tài)庫和FrameWork
如果你用Swift
,運(yùn)行otool -L
將會(huì)出現(xiàn)所有的Swift的FrameWork
在包含swift的MyFrameWork運(yùn)行otool -L
如果你編譯的應(yīng)用沒有用到Swift
的源文件迷雪,只是鑲嵌了包含的FrameWork.Xcode將不會(huì)在你的app加入這些庫板辽。你的應(yīng)用將會(huì)在啟動(dòng)的時(shí)候Crash打印下面的錯(cuò)誤。
dyld: Library not loaded: @rpath/libswiftCoreGraphics.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/696F0EAD-E2A6-4C83-876F-07E3D015D167/<Your_App>.app/Frameworks/<Framework_Name>.framework/<Framework_Name>
Reason: image not found
<Your_App>
和<Framework_Name>
分別是你應(yīng)用的和你應(yīng)用可見的framework桩卵。
對(duì)于上面問題的解決版本验靡,在build setting里面設(shè)置Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT)
為YES如下面的圖所示。這個(gè)設(shè)置是你的工程包含Swift的代碼讓Xcode顯示swift的靜態(tài)庫雏节。
設(shè)置Swift的代碼的靜態(tài)庫可見
為了防止你的APP包含多個(gè)Swift的靜態(tài)庫副本胜嗓,確保Embedded Content Contains Swift Code
設(shè)置為NO。