我使用了这个问题的答案How to detect if any external libraries are calling [UIDevice currentDevice] uniqueIdentifier]?
获取正在调用uniqueIdentifier的日志。但是我无法从日志中提取更多有用的信息。如何确定调用uniqueIdentifier的类或库。
* thread #7: tid = 0x2603, 0x01850690 UIKit`-[UIDevice uniqueIdentifier], stop reason = breakpoint 6.1
frame #0: 0x01850690 UIKit`-[UIDevice uniqueIdentifier]
frame #1: 0x02743663 libobjc.A.dylib`-[NSObject performSelector:] + 62
frame #2: 0x001038ff SmackTalk`CLSHostDataInit + 843
frame #3: 0x028b4014 libdispatch.dylib`_dispatch_client_callout + 14
frame #4: 0x028a52e8 libdispatch.dylib`_dispatch_root_queue_drain + 335
frame #5: 0x028a5450 libdispatch.dylib`_dispatch_worker_thread2 + 39
frame #6: 0x9a597e72 libsystem_c.dylib`_pthread_wqthread + 441
答案 0 :(得分:4)
CLS是否引用了您可能添加的任何框架?似乎是您发布的日志中最好的线索。
您可以尝试反复尝试。从最可能的嫌疑人(如分析或广告框架)开始,取消链接并注释掉相关代码,看看该断点是否仍然受到影响。
根据您正在讨论的库的数量,查找这些库的项目页面并检查其代码的当前状态以及代码版本的最新状态可能也是有意义的。最好的情况是他们已经更新了他们的库并提取了UDID代码,所有你需要做的就是更新到最新版本。
答案 1 :(得分:0)
从跟踪中,看起来调用者可能试图使用-[NSObject performSelector:]
来屏蔽调用,并在调度块中执行此操作。但是,既然您知道某些库正在进行此调用,那么您应该可以缩小哪一个。 For example,您可以在所有链接库上尝试此命令:
$ strings libFoo.a | grep uniqueIdentifier
这应该有助于找出哪个库可能会调用有问题的方法。