美文网首页
iOS Object-c和Swift混合编写Framework

iOS Object-c和Swift混合编写Framework

作者: Leo_5cdb | 来源:发表于2017-12-12 10:39 被阅读0次

    最近想把项目工程编写成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 

    相关文章

      网友评论

          本文标题:iOS Object-c和Swift混合编写Framework

          本文链接:https://www.haomeiwen.com/subject/gmygixtx.html