我怎么在Object-C
中用Swift
如果你想编译一个应用程序并且这个应用程序包含Swift
文件,Swift
支持的标准库已经添加到Bundle
里面。你可以随时可以在终端运行otool -L
查看一个产品包含的FrameWork
。这个可以显示你的产品依赖的静态库和FrameWork
如果你用Swift
,运行otool -L
将会出现所有的Swift的FrameWork
在包含swift的MyFrameWork运行otool -L
Paste_Image.png
如果你编译的应用没有用到Swift
的源文件,只是镶嵌了包含的FrameWork.Xcode将不会在你的app加入这些库。你的应用将会在启动的时候Crash打印下面的错误。
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>
分别是你应用的和你应用可见的framework。
对于上面问题的解决版本,在build setting里面设置Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT)
为YES如下面的图所示。这个设置是你的工程包含Swift的代码让Xcode显示swift的静态库。
设置Swift的代码的静态库可见
Paste_Image.png
为了防止你的APP包含多个Swift的静态库副本,确保Embedded Content Contains Swift Code
设置为NO。