其实一直比较抵触这个垃圾pod管理第三方组件或者是实用工具,并且很多开发人员写的东西也很垃圾!这不,最近公司项目外包到第三方,其就使用pod来大量引入第三方组件来搞开发。但是重点问题来了,第三方组件引起崩溃!OC中应该没有问题,因为OC中一个函数的参数可以传对应的参数对象,也可以传一个nil进去,根本不会崩溃。而在swift中就不一定了,如果你定义的输入参数并不是可选可空参数,那传一个nil进去立即崩溃!!
如下分析:lastUpdatedTimeText方法就因为逻辑不严谨出现BUG,导致崩溃!
NSDate *lastUpdatedTime = [[NSUserDefaultsstandardUserDefaults]objectForKey:lastUpdatedTimeKey];
lastUpdatedTime初始未被设置,则值为空!!将空nil传进去,立即崩溃!
@property (copy, nonatomic,nullable) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime);
注意:(NSDate *lastUpdatedTime);这个输入的定义,在swift中意即必须是有效的对象。如果是nil,只能呵呵了。没办法,只能修改这个破组件的源码!将其定义改为:
@property (copy, nonatomic,nullable) NSString *(^lastUpdatedTimeText)( NSDate * _Nullable lastUpdatedTime);
希望以上吐槽能帮助到遇到同样问题的人。这样改了,如果你pod更新一下,你修改的就又没了。。。所以,要么,不要更新最新版本,要么就去git上提BUG,让开发人员处理。或者是自己GIT拉下来,修改掉,给提交上去。
网友评论