我怎么在`Object-C`中用`Swift`

我怎么在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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,200评论 4 61
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS[https://github...
    香橙柚子阅读 8,705评论 0 36
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • 第二部分 盛年不重来,一日难再晨 第三十一章 怎会不记得 姥爷在搬到另一个城市只享受了三个月的好生活,三个月之后,...
    W晓晓阅读 219评论 0 2
  • 都说细节决定成败,可往往我们最容易忽视的,也是一个个小细节,其中一些,可能很小,但能很好的体现修养,把个人更好的一...
    处处1阅读 646评论 0 3