iOS Object-c和Swift混合编写Framework

最近想把项目工程编写成framework,但是项目本身是oc(object-c简称)编写的。而项目中的折线图等实现是使用的swift的一个类库,所以需要编写swift和oc混合开发一个framework。

新建target或者本身就是framework的项目,这个我就不说了,一般百度下就可以了。我所要说的是 framework不支持 Objective-CBridging Header。所以在oc和swift相互调用的时候需要注意的是,

oc调用swift

需要引用系统为oc创建的一个隐含文件。#import "TWF(项目名)/TWF(product Module name)-Swift.h",这样oc还是不能调用一些swift。需要对外调用的swift 需要申请为public,例如:public class SwiftViewController: UIViewController。这里还有一些细节,有时间研究下。

swift调用oc 不需要引入头文件。但是需要在项目的公共的头文件中引入对swift开放的oc文件头。一般为项目名.h的头文件中。并且将该头文件在target-》build phases-〉headers中设置为public。

这样就可以相互调用和打包为framework了。

引入项目可能会报错

dyld: Library not loaded: @rpath/libswiftCore.dylib

Referenced from: /var/containers/Bundle/Application/295BD35B-CF6C-4769-B29F-116D60E4E4C5/PPStocks.app/PPStocks

Reason: no suitable image found.  Did find:

需要配置

并且需要在target的general的embedded binaries中添加该framework。并且将linked frameworks and Libraries中的framework的status的状态选为 Optional。


参考文献:

官方给出的混编的规范:

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_84

官方给出的swift的修饰关键词

https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html#//apple_ref/doc/uid/TP40014097-CH41

一些网络资源:

oc和swift和一个坑

http://www.jianshu.com/p/de8745c5cf0a

oc和swift的一个framework。

http://www.jianshu.com/p/b0a38b4ba5b9

swift framework

http://www.jianshu.com/p/13ee670f21ac 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,823评论 4 61
  • 1、要有占据主动的思想,不能嘻嘻哈哈等着别人来修理自己,这样在比赛的时候自己就有了斗志。 2、学习经典就是在改变思...
    智囊团阅读 1,369评论 0 0
  • 划过 模糊 擦去 这个角度的蔚蓝 把故事深深的吞入浩瀚 在某个你不知道的时空 偷偷回忆 ...
    Melody棉花阅读 2,895评论 0 0
  • 第一次看到这句话是在微博上面,觉得这情话绵绵。直入心坎,恐怕没有一个女生抵御的了它的诱惑。 再次看到这句话时,是在...
    派小星Me阅读 1,828评论 0 0
  • 杨绛先生一百岁感言 如是说 我今年一百岁,已经走到了人生的边缘,我无法确知自己还能走多远...
    指尖弹过阅读 3,919评论 0 3

友情链接更多精彩内容