iOS 11 适配 RAC警告问题解决方案

RAC警告问题解决方案

问题:

xcode9 中,在开发ios应用时,会发现第三方库ReactiveCocoa出现这样的问题

  • 报警告如下
  • ReactiveCocoa Unknown warning group ‘-Wreceiver-is-weak’,ignored...
iOS 11 适配 RAC警告问题解决方案_第1张图片
ReactiveCocoa警告.png

ReactiveCocoa中:

RACObserve宏定义如下:

iOS 11 适配 RAC警告问题解决方案_第2张图片
RACObserve宏定义.png

原因:

  • 此前,如果Xcode中的消息接受者是一个weak对象,clang编译器会报receiver-is-weak警告,所以加了这段push&pop代码,最新的clang已经把这个警告给移除,所以没必要加push&pop了。

改为下面这样就可以:

#define RACObserve(TARGET, KEYPATH) \
    ({ \
        __weak id target_ = (TARGET); \
        [target_ rac_valuesForKeyPath:@keypath(TARGET, KEYPATH) observer:self]; \
    })

修改时可能要解锁Podfile文件,因为ReactiveCocoa已经不再对Objective-C进行维护,如果你的项目中用到它,最好不要再去更新.因为它的最新稳定版是2.5版,在此基础上,你修改其中的一个预防警告的代码,是不会影响这个库对项目的影响的.


如果有其他好的方案,或者对本文有什么问题,可以在 留言中讨论,谢谢各位指正

你可能感兴趣的:(iOS 11 适配 RAC警告问题解决方案)