一、使用Pods集成
- 由于
EaseUI
使用了宏NSEaseLocalizedString
, 在Podfile
文件中不能使用use_frameworks!
, 应该是因为NSBundle
不能访问framework
.
如果你通过Pods在OC工程中集成了Swfit写的三方库, 那么恭喜你, 你只能手动集成
EaseUI
或者手动集成Swift的库. 当让, 手动集成EaseUI
还有其他问题. 下面会提到.
- 如果你之前工程一直在使用
use_frameworks!
, 为了集成EaseUI
而去掉, 那么会报错ld:framework not found xxxxxx
. 这是因为Ohter Linker Flags
中残留的设置, 删掉就可以了.
以
删除-framework及"AFNetworking"AFNetworking
为例, 报错ld:framework not found AFNetworking
, 那么需要删掉Other Linker Flags
中的-framework
及"AFNetworking"
. 如图所示:
顺便提一句, 如果一直没有使用use_framework!
, 突然使用可能会报错ld: library not found for -lAFNnetrowking
, 参考:https://www.jianshu.com/p/d0dc92d9a31b
- 去掉
use_framework!
还有一个问题, 在我的工程中, 去掉之后LBXScan
报错找不到LBXScanViewController
的style
属性. 该属性声明如下:
#ifdef LBXScan_Define_UI
@property (nonatomic, strong) LBXScanViewStyle *style;
#endif
这是为了能够分模块下载. 除了使用use_framework!
之外, 还可以通过在pch
文件中声明宏LBXScan_Define_UI
的方式解决. 解决办法: https://github.com/MxABC/LBXScan/issues/111
-
EaseUI
直接或间接依赖了老版本的MBProgressHUD
、MJRefresh
和SDWebImage
等三方库. 如果你同时使用Pods集成了直接或间接依赖以上三方的新版本, 会造成冲突, 只能二选一(黑科技除外).
二、手动集成
手动集成我遇到的唯一问题是使用@import
的时候会报错:
Use of '@import' when C++ modules are disabled, consider using -fmodules and -fcxx-modul
.
这是由于EaseUI
中有.mm
文件, 而@import
是不能在C++
模块使用. 然而LBXScan
中就使用了@import
, 由于这部分是同事集成并使用的, 所以遇到这个问题我就直接选择通过Pods
集成的办法. 也许手动集成LBXScan
也可以解决问题. 因为手动集成的话, 我们就可以放心修改三方的源码了.
网友评论