iOS中Swift和Objective-C混编

环境:

通过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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • Swift从2014年发布到现在,马上接近三年,经过苹果的不断改进和完善,语法方面已经趋于稳定。如果是新建的项目,...
    Lebron_James阅读 8,743评论 4 43
  • 《好好学习》 阅读好的书籍,吸收好的观点,逐渐完善自我知识体系,提升认知的深度,更好的享受分享生活中美好的事物。 ...
    爱美丽_赫然阅读 306评论 0 2
  • 一阵惶恐的风, 刮塌了思念的墙。 一枚顽皮的棋子, 跳乱了整齐的网。 一个难以启齿的字, 只能深埋在月亮。
    青鹅阅读 190评论 0 3
  • 昨天想尽各种办法帮女儿复习英语,发现很多单词都不会默写,于是让她背,然后我检查,一大早我做完家务,趁下午儿子睡觉时...
    四一班梁勤夏妈妈阅读 922评论 1 3