BRPickerView遇到时NSTaggedPointerString产生的问题

问题引出

在使用一个第三方封装好的文字选择器BRPickerView时,给选择器传的数组是一个字符串数组,然后在实际使用时点击选择文字时,出现运行奔溃。排查了自己的代码没有问题的情况下,开始打断点查看第三方源码。结果查到原因是代码里面对数组元素类型进行了一致性的判断,如果数组里元素类型不一致就抛出异常,代码也是没问题的。排查的结果是这样的


结果

问题的原因:NSTaggedPointerString

明明传的都是NSString对象,但是在实际运行时,第3个就变成了NSTaggedPointerString。

NSTaggedPointerString的介绍

在苹果推出了采用64位架构的A7双核处理器 iphone 5s的时候,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。在字符串是比较短的时候会优化成NSTaggedPointerString对象。


所以问题的解决就是去掉第三方源码里面的数组类型元素的判断


NSTaggedPointerString相关介绍文章

https://www.jianshu.com/p/df630e78df32

你可能感兴趣的:(BRPickerView遇到时NSTaggedPointerString产生的问题)