美文网首页
OC调用Swift编写的framework

OC调用Swift编写的framework

作者: 龙猫六六 | 来源:发表于2017-10-18 13:59 被阅读669次

framework的Headers文件夹

xcode新建工程选择Cocoa Touch Framework类型


1.jpg

编码语言选择swift


1

置此完成由swift编写的framework

头文件的暴露


1.jpg

framewrok的作用就是避免源码暴露给调用者,只开放想要开放的文件/接口。
文件暴露:target->BuildPhase->Headers->Public;将需要暴露的文件添加到上述路径,framwork就会暴露该文件

swift framework在oc的兼容性

swift编写的framwork在oc工程能被正常使用,如下述代码需要注意以下几点:

public class CustomClass: NSObject {
   @objc
    public init(view: UIView) {
    }
}

1.自定义CustomClass类为public
2.自定义CustomClass类继承NSObject
3.自定义CustomClass类的public需要标明@objc关键字

验证方法
查看对应的xxx.framework对应的xxx-Swift.h(xxx.framework->Headers->xxx-Swift.h),验证暴露的方法是否存在于xxx-Swift.h
ClassName类中有定义了4个方法,差异在于public,@objc两个关键字
ClassName.swift

//@objc+ public
    @objc
    public func myMethod1(par:Int)-> Int{
        return par
    }
//public 
    public func myMethod2(par:Int)-> Int{
        return par
    }
//@objc+ private
     @objc
    private func myMethod3(par:Int)-> Int{
        return par
    }
//private   
    private func myMethod4(par:Int)-> Int{
        return par
    }

xxx-Swift.h

SWIFT_CLASS("_TtC17ProjectName10ClassName")
@interface ClassName : NSObject <CALayerDelegate>
- (NSInteger)myMethod1WithPar:(NSInteger)par SWIFT_WARN_UNUSED_RESULT;
@end

说明:
1."_TtC17ProgectName10ClassName":工程名ProgectName+类名ClassName,一般以这种组织形式表明对应的类为公开类,对调用者开放
2.只有@objc+ public两个关键字的方法才会被暴露
3.framework中定义的方法名,在oc中可能会发生变化,但可在xxx-Swift.h确认最终的方法名

OC中framework使用

模式选择

1.framework的添加
a.调试模式:将framework target放在app target同一个workpalce,然后在wrokplace中的build中找到对应的xxx.framework待后续使用。
特点:便于调试
b.非调试模式:将xxx.framework拖入到app target的工程中。
特点:无法调试

app target的xx.frmaework环境配置

路径:
1.app traget -> general->embedded binaries 添加目标framework
2.linked frameworks and libraries 添加目标framework

1.jpg

app target代码中使用

1.头文件声明
如下,xcode不会有联想提示,需要手动输入

#import "ProjectName/ProjectName-Swift.h"

2.方法调用
直接调用ProjectName-Swift.h中声明的类方法/实例方法

[[ClassName alloc] initWithView:self.window];

注意:
编译过程中会提示动态库文件找不到,“image not fund”,
可以通过切换“Aways Embed Swift Standard Libraries”的设置

相关文章

  • OC调用Swift编写的framework

    framework的Headers文件夹 xcode新建工程选择Cocoa Touch Framework类型 编...

  • RN日志

    问题:swift封装的framework(也含有OC文件)在OC项目中调用报错,报错信息基本上是找不到swift相...

  • 在.framework 中,OC 和 Swift 互调

    OC 和 Swift 互调(.framework 中和普通项目中) Framework 实现 OC 与 Swift...

  • Swift 和 OC 混编之 framework

    Swift 和 OC 混编之 framework 在主工程为 Swift 的 framework 中引用 OC 代...

  • OC调用Swift framework

    在此记录下OC如何调Swift framework! 新建工程OCCallSwift,语言选择OC,如图:imag...

  • Swift OC 混编

    小问题汇总 Swift Framework如何调用无法使用bridge文件,如何OC混编将oc代码封装在一个fra...

  • Swift: 分别开放不同的接口给OC和Swift

    最近使用Swift编写Framework,遇到有一些方法想单独开放给OC,另一些单独开放给Swift使用,之所以有...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • OC-Swift混编相关配置

    1.oc调用swift 在oc中使用swift代码,需要把swift代码作为module暴露给oc进行调用 配置如...

  • Swift与OC混编

    标签:Swift 在Swift中调用OC 首先创建OC/Swift工程 然后创建swift/OC文件,Xcode会...

网友评论

      本文标题:OC调用Swift编写的framework

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