多語言並存時期,混編成為一種必須的方式 ,在多場影中實現OC和Swift語言的並存原來是如此簡單
第一種場景,App中實現混編
- 創建橋接文件
*.h
新建一個橋接文件,New File選擇Header File創建 - 指定橋接文件
project->targets->Build Setting->All->Swift Compilter General->Objective-C-Bridging-Header指定剛剛的新建的橋接文件

- 導入OC頭文件(
*.h)到橋接文件
如:#import "Log.h"

- 完成調用
在Swift文件中直接調用
注:在Swift項目中第一次創建OC文件,Xcode會自動提示創建橋接文件

第二種場景,Framework 中實現混編
- 創建
Famework
創建完成后會生成一個同名頭文件*.h - 將OC頭文件(
*.h)設置為公開頭文件
project->targets->Build Phases->Headers->Public,直接拖入

- 導入OC頭文件(
*.h)到同名頭文件
如:#import "Log.h"
- 完成調用
在對外的Swift文件中直接調用

注:對外的類和方法必須public標示才可訪問
第三種場景,Pod 包中實現混編
在完成第二種場景后,添加*.podspec文件實現 Pod 包
-
生成
*.podspec
運行命令pod spec create [name]生成*.podspec文件 -
編輯
*.podspec
在*.podspec中將OC頭文件(*.h)設置為公開頭文件
如:spec.public_header_files = "Log.h"#完整的文件信息 Pod::Spec.new do |spec| spec.name = "OCSwiftFramework" spec.version = "0.0.1" spec.summary = "OCSwiftFramework" spec.description = <<-DESC OCSWiftFramework DESC spec.homepage = "https://www.ichochy.com" spec.license = "MIT" # spec.license = { :type => "MIT", :file => "FILE_LICENSE" } spec.author = { "MLeo" => "iChochy@qq.com" } spec.platform = :osx spec.osx.deployment_target = "10.10" spec.source = { :git => "https://github.com/iChochy/HelloWorld.git", :tag => "#{spec.version}" } spec.source_files = "**/*.{h,m,swift}" spec.exclude_files = "Info.plist" spec.public_header_files = "Flog.h" spec.swift_version = "4.2" end -
驗證
*.podspec
運行命令pod lib lint完成驗證 -
完成調用
a. 運行命令pod trunk push [NAME.podspec]完成發布
b.Podfile中添加pod "[name]"
c. 運行命令pod install完成pod安裝
d. 安裝完成后直接調用
注:可用pod "[name]", :path => "[path]"本地指定
GitHub:
HelloWorld:https://github.com/iChochy/HelloWorld.git
聯系方式:
郵箱:iChochy@qq.com
網站:https://www.ichochy.com
源文:https://www.ichochy.com/blog/2019/09/04/OC與Swift混編-三種場景的實現方式.html
