美文网首页
iOS中Swift和Objective-C混编

iOS中Swift和Objective-C混编

作者: 叫我大表弟吧 | 来源:发表于2017-02-13 14:44 被阅读220次
    环境:

    通过Xcode创建的Swift工程,以MJRefresh为例

    情况一:

    使用Cocoapods中的use_frameworks!关键字引入Objective-C库,在需要用的地方直接import即可

    Podfile文件:

    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, ‘8.0’
    use_frameworks!
    
    
    target 'XXX' do
      pod 'Alamofire'
      pod 'SwiftyJSON'
      pod 'Kingfisher'
      pod 'RxSwift'
      pod 'Then'
      pod 'PKHUD'
      pod 'Moya'
      pod 'Moya/RxSwift'
      pod 'HandyJSON'
      
      #OBJC
      pod 'MJRefresh'
    
    end
    

    使用:

    //
    //  XXXViewController.swift
    //  XXX
    //
    
    import Foundation
    import Moya
    import SwiftyJSON
    import HandyJSON
    import MJRefresh
    
    class XXXViewController: BaseViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
    
            })
            tableView.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock: {
    
            })
        }   
    }
    
    
    情况二:

    使用Cocoapods引入Objective-C库(无use_frameworks!关键字)或者手动导入,添加Header.h文件,Header.h中import Objective-C库,在Build Settings里的Objective-C Bridging Header里加入Header.h的文件路径即可

    Header.h文件:

    //
    //  Header.h
    //  XXX
    //
    
    #ifndef Header_h
    #define Header_h
    
    #import "MJRefresh.h" 
    //或者
    #import <MJRefresh/MJRefresh.h>
    
    #endif /* Header_h */
    

    Objective-C Bridging Header路径设置:


    Objective-C Bridging Header路径设置.png
    注意:

    Objective-C中的NS_ENUM转换为Swift中的enum后可能是这样的

    Swift enum.png Objective-C NS_ENUM .png

    相关文章

      网友评论

          本文标题:iOS中Swift和Objective-C混编

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