OpenUDID冲突的问题
来源:互联网 发布:桂正和m知乎 编辑:程序博客网 时间:2024/06/06 03:47
苹果在iOS6中禁用了[UIDevice uniqueIdentifier],在iOS7中又把mac地址的获取给堵上了,所以大家想到了使用OpenUDID这个解决方案,毕竟开源,使用方便。
我们的一个SDK中使用了OpenUDID标识设备,使用起来好像一切都很正常,但某一天,产品突然抱怨说,我们的SDK出现crash了:
这是主线程的崩溃堆栈,从上面的信息来看,是在粘贴版操作出现错误。所以我们首先查找我们的代码,没发现异常,因为这是使用的OpenUDID的源代码;然后又去OpenUDID的官网查看,是否有用户上报这类bug或者解决方案,没有有用的信息;继续去各大论坛搜索,也是一无所获。最后再去把Apple的文档看一遍,查看[UIPasteboard pasteboardWithName]的用法,即使参数传递为nil,也不会出现crash的情况。
从它的说明上看,在使用的时候也没有什么需要注意的地方。后来实在没有找到crash产生的原因,突然想到以前做C/C++开发时,经常遇到的多线程同步的问题,这个crash是不是也是这个原因呢?因为从产品的反馈来看,出现crash的概率很低,几百万出现一两个。所以让产品把其他线程的堆栈也发给我们,如下:
果然,功夫不负有心人,真的发现还有一个线程也在使用OpenUDID的功能,现在基本断定就是这个问题了,我的猜测是,既然[UIPasteboard pasteboardWithName]的参数传递不会出现问题,那么问题就出现里面的实现代码,可能的原因是它的实现是线程不安全的,这只是猜测,无从考证,如果真是这样的话,Apple的文档上应该做一些多线程同步的提示。
所以,果断放弃OpenUDID的使用,直接使用Keychain方式,安全还持久。
- OpenUDID冲突的问题
- UDID和openUDID的区别
- UDID与OpenUDID的区别联系
- UDID与OpenUDID的区别联系
- 关于OpenUDID的测试分析(含Demo)
- 关于OpenUDID的测试分析(含Demo)
- 关于OpenUDID的测试分析 自己也进行了测试
- iOS 常用常用的id IDFA IDFV MAC UDID openUDID
- iOS 常用常用的id IDFA IDFV MAC UDID openUDID
- 关于OpenUDID的测试分析(含Demo)
- 常用的id IDFA IDFV MAC UDID openUDID
- ios常用的ID(IDFA IDFV MAC UDID openUDID )
- iOS 常用常用的id IDFA IDFV MAC UDID openUDID
- jdk的path冲突问题
- msvcprt.lib 冲突的问题
- link库冲突的问题
- flex端口冲突的问题
- asm冲突的问题(转)
- java-文件io
- file命令用法
- 3.直接插入排序,希尔排序,归并排序
- 链表——按k个结点一组来反转链表
- 【C#设计模式-状态模式】
- OpenUDID冲突的问题
- java enum 举例
- UVA_820_Internet Bandwidth
- 输入一组数,创建(带头节点)的单链表(头插法、尾插法)
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- iOS动画编程-2
- Redis CrackIT入侵事件分析
- Android知识点收集
- poj 1159 Palindrome -- 回文串,动态规划