美文网首页
Swift 与 Objective-C 混编

Swift 与 Objective-C 混编

作者: 小_夭 | 来源:发表于2020-01-13 17:23 被阅读0次

    一、同一个 Target 中:

    Language Import into Swift Import Into Objective-C
    Swift - #import "ProductModuleName-Swift.h"
    Objective-C Objective-C 桥接文件 #import "Header.h"
    • 桥接文件ProjectName-Bridging-Header.h,这个文件主要是Swift使用OC类时使用。在首次创建其他文件时,会自动生成。如果不小心删除了,可手动新建Header file后,在Targets --> Build Settings --> Swift Compiler - General --> Objective-C Bridging Header配置文件路径。
    • ProductModuleName-Swift.h是系统生成的Swift文件对应的Objective-C的头文件,可在Targets --> Build Settings --> Swift Compiler - General --> Objective-C Generated Interface Header Name进行配置,一般不做改动。当在OC文件中调用Swift文件中的类时,首先在OC文件中要加上 #import "ProjectName-swift.h”

    二、同一个 framework 内

    Language Import into Swift Import Into Objective-C
    Swift - #import <ProductName/ProductModuleName-Swift.h>
    Objective-C Objective-C umbrella header #import "Header.h"
    • Objective-C umbrella header是 Objective-C代码引入Swift使用时的头文件,名为ProductModule-umbrella.h,使用流程如下:
      1)编写Objective-C代码
      2)设置Objective-C类的.h文件为public(一般来说默认就是public的,如下图)
      设置Objective-C类的.h文件为public.png
      3)在示例程序中pod install之后,会在ProductModule-umbrella.h文件中自动导入Objective-C的.h文件

    三、导入外部的 Frameworks

    Language Import into Swift Import Into Objective-C
    Any language framework import FrameworkName @import FrameworkName;

    四、注意事项

    • 需要混编的Swift类需继承自NSObject或NSObject的子类,并使用public加以声明,否则ProductName-Swift.h中不会自动生成对应的声明;
    • 需要混编的Swift类的属性或方法需同时用@objc、public修饰,否则ProductName-Swift.h中不会自动生成对应的声明。

    参考:
    1、Swift 与 Objective-C 混编

    相关文章

      网友评论

          本文标题:Swift 与 Objective-C 混编

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