当我们CD到项目中 使用pod init之后 当我们编辑podfile文件的时候 如果我们在podfile文件中直接pod 第三方的时候需要注意到的细节:
1.pod init之后默认的podfile文件是这样的
系统说明的就是让我们在17行的位置导入我们需要的第三方,我在这个位置导入 ReactiveObjC 第三方 之后wq保存退出,然后在使用pod install安装我们需要的第三方会出现一个警告
Analyzing dependencies
Downloading dependencies
Installing ReactiveObjC (3.0.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `ReactiveObjCTest.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
[!] Automatically assigning platform `ios` with version `11.0` on target `ReactiveObjCTest` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
有兴趣的伙伴可以前往链接查看pod的使用规范问题,我们现在可以忽略这个警告
2 .使用ReactiveObjC出现的问题
当我使用ReactiveObjC功能的时候会报一个link的错误也就是这样的
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_RACDisposable", referenced from:
objc-class-ref in ViewController.o
"_OBJC_CLASS_$_RACSignal", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
附带一张报错图片
这个时候我们改怎么办哪? 好了不卖关子了
网上找了好多的资料说最新版的ReactiveObjC需要导入两个版本
pod 'ReactiveCocoa', '~>5.0.1'
pod 'ReactiveObjC', '2.1.2'
附带了这种方式的解答
如果你只是纯 swift 项目,你继续使用 ReactiveCocoa 。但是 RAC 依赖于 ReactiveSwift ,等于你引入了两个库。
如果你的项目是纯 OC 项目,你需要使用的是 ReactiveObjC 。这个库里面包含原来 RAC 2 的全部代码。
如果你的项目是 swift 和 OC 混编,你需要同时引用 ReactiveCocoa 和 ReactiveObjCBridge 。但是 ReactiveObjCBridge 依赖于 ReactiveObjC ,所以你就等于引入了 4 个库
但是这样并没有效果 ,有说把legacy那个属性设置为no
但是编译依然通不过,小编有尝试其它的几种方式但是依然没用。
3.有效的解决方法
我们在vi podfile文件中,把代码都删除了,只留下这几行代码,然后保存退出更新一下就编译通过了,附上图片
最后在命令行输入pod install 执行更新下,然后就编译通过了。
如果有遇到这个问题的小伙伴就尝试这种方式解决,希望有帮到你,摸索了好多个小时,不断的测试才解决的,有喜欢的小伙伴可以点个❤️谢谢大家。