OC與Swift混編,三種場景的實現方式


多語言並存時期,混編成為一種必須的方式 ,在多場影中實現OC和Swift語言的並存原來是如此簡單

第一種場景,App中實現混編

  1. 創建橋接文件*.h
    新建一個橋接文件,New File 選擇 Header File 創建
  2. 指定橋接文件
    project->targets->Build Setting->All->Swift Compilter General->Objective-C-Bridging-Header 指定剛剛的新建的橋接文件
    15675840517343041
  3. 導入OC頭文件(*.h)到橋接文件
    如:#import "Log.h"
    15675868286636003
  4. 完成調用
    Swift文件中直接調用

注:在Swift項目中第一次創建OC文件,Xcode會自動提示創建橋接文件
15675668261700973

第二種場景,Framework 中實現混編

  1. 創建Famework
    創建完成后會生成一個同名頭文件*.h
  2. 將OC頭文件(*.h)設置為公開頭文件
    project->targets->Build Phases->Headers->Public,直接拖入
    15675857436917952
  3. 導入OC頭文件(*.h)到同名頭文件
    如:#import "Log.h" 15675870536575205
  4. 完成調用
    在對外的Swift文件中直接調用
    15675871376567946
    注:對外的類和方法必須 public 標示才可訪問

第三種場景,Pod 包中實現混編

在完成第二種場景后,添加*.podspec文件實現 Pod 包

  1. 生成 *.podspec
    運行命令 pod spec create [name] 生成 *.podspec 文件

  2. 編輯 *.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
    
    
  3. 驗證 *.podspec
    運行命令 pod lib lint 完成驗證

  4. 完成調用
    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM