- 在用OC写代码时,我们使用PCH统一导入在绝大部分地方需要使用到的三方库和一些宏定义,比如导入网络请求,图片加载,然后设置屏幕尺寸,Debug之类的,但是Swift并没有这个,很忧伤
test.pch
#ifndef PrefixHeader_pch
#define PrefixHeader_pch
//一些大部分类需要用的三方库
#import "AFNetworking.h"
#import "Masonry.h"
...
//debug
#ifdef DEBUG
#define NSLog(argv,...) NSLog((@"\n方法: %s \n行号: %d \n打印信息:"argv), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define NSLog(...)
#endif
//size
#define Screen_W [UIScreen mainScreen].bounds.size.height
#define Screen_H [UIScreen mainScreen].bounds.size.width
#endif
/* PrefixHeader_pch */
- 当我们开始OC和Swift混编了的时候,我们可以在xxx-Bridging-Header.h,中导入第三方框架到Swift中使用,此时在Swift中的宏定义那就只能找个文件直接let了,比如Const.swift之类的。
- 当单纯使用Swift写程序时,一直使用OC的我找不到怎么统一导入三方库,虽然说单独导入也有单独导入的好处,但是有时候还是想统一导入某一些库。比如R.Swift,RxSwift之类在项目中各处都大量使用的库
导入方法一:在要使用的类头部import
import Foundation
import MBProgressHUD
import Rswift
适合不常用的一些三方库
导入方法二:自己在要导入的库上方再封装一层,就变成全局导入的了,比如 MBProgressHUD,先新建一个HUD.swift,然后在里面:
import Foundation
import MBProgressHUD
///弹窗加载提示
class func show() {
MBProgressHUD.showAdded(to: viewToShow(), animated: true)
}
///隐藏所有弹窗
class func hide() {
MBProgressHUD.hide(for: viewToShow(), animated: true)
}
这样在需要使用的地方直接按如下示例使用就行,不需要单独导入了
HUD.show()
HUD.hide()
导入方法三:某些自己无法轻松封装的,或者本来已经非常容易使用的库,但是又在项目中大量使用,如我我在项目用到了Then协议库,和R.swift本地资源加载库,很多地方都要用,每个地方都去导入又非常麻烦,那么可以使用@_exported import关键字导入,这样就可以全局通用了,比如我在我的Const.swift中:
import Foundation
import UIKit
@_exported import Hue
@_exported import RxSwift
@_exported import RxCocoa
@_exported import Rswift
@_exported import Then
/// RxSwift 回收池
let disposeBag = DisposeBag()
/// 屏幕高度
let Screen_H = UIScreen.main.bounds.height
/// 屏幕宽度
let Screen_W = UIScreen.main.bounds.width
这样使用就十分方便了
网友评论