Objective-C 工程中使用 Swift文件

  1. 新建一个*.swift 文件

  2. 根据XCode提示或手动生成ProjectName-Bridging-Header.h文件

  3. 配置工程 PROJECT -> Build Settings

    Defines Module : NO
    Embedded Content Contains Swift : NO
    Install Objective-C Compatibility Header : YES
    Objective-C Bridging Header : ProjectName-Bridging-Header.h
    
  4. 在新建的类class前面加上@objc如下:

    @objc class LBCollaAddFileVC: UIViewController {
       override func viewDidLoad() {
          super.viewDidLoad()
       }
    }
    
  5. 在需要使用该.Swift文件的.h文件引入 #import "LinkPortal-Swift.h" 文件,这样就可以使用工程ProjectName module 下的所有Swift文件了

注意是引入 #import "LinkPortal-Swift.h" 文件,不是#import "*.swift"文件

  1. *.Swift文件中使用Pods中的第三方库,在ProjectName-Bridging-Header.h文件中引入对应的文件,如引入Masonry :#import <Masonry/Masonry.h>即可在同一个ProjectName module下所有*.Swift文件都可以作swift语法使用Masonry的代码。

同一个App Target中引入代码:

Import into SwiftImport into Objective-C
Swift codeNo import statement#import "ProductModuleName->Swift.h"
Objective-C codeNo import statement; Objective-C bridging header required#import "Header.h"

不同语言引入Frameworks

Import into SwiftImport into Objective-C
Any language frameworkimport FrameworkName@import FrameworkName;

�参考资料:

官方资料-原理

官方资料-代码

简书-Objective-C和Swift混编的一些经验

Using Swift with Cocoa and Objective-C中文手册

Can’t use Swift classes inside Objective-C

点赞