UIKit调试模式

UIKit调试模式

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

文章讨论了在iOS开发中如何通过UIPopoverControllerPaintsTargetRect和其他调试标志增强UIKit的调试功能。作者发现了一个隐藏的偏好设置文件,并利用Aspects和Facebook的fishhook技术修改设置,以获取更详细的触摸和手势日志。尽管在iOS 8中某些功能受限,仍可通过特定方法进行调试。

🎯

关键要点

  • 发现了一个名为UIPopoverControllerPaintsTargetRect的字符串,值得深入研究。
  • 在/Library/Preferences/com.apple.UIKit下找到了一个隐藏的偏好设置文件,UIKit会查询这些设置。
  • 使用Aspects对NSUserDefaults进行swizzle,以启用UIPopoverControllerPaintsTargetRect键,但仅在iOS 7中有效。
  • 在iOS 8中,UIPopoverPresentationController不完全支持目标矩形绘制。
  • 发现了一些有用的调试标志,可以打印触摸、手势、动画等的详细日志。
  • 大多数其他标志受到CPIsInternalDevice()的保护,难以访问。
  • 使用Facebook的fishhook技术重定向MGGetBoolAnswer的调用,以手动返回YES。
  • 建议将这些调试工具仅用于调试目的,不要在生产环境中使用。

延伸问答

UIPopoverControllerPaintsTargetRect是什么?

UIPopoverControllerPaintsTargetRect是一个在UIKit中发现的字符串,值得深入研究。

如何在iOS开发中增强UIKit的调试功能?

可以通过使用Aspects和Facebook的fishhook技术,修改隐藏的偏好设置文件来增强UIKit的调试功能。

在iOS 8中,UIPopoverPresentationController的支持情况如何?

在iOS 8中,UIPopoverPresentationController不完全支持目标矩形绘制。

如何使用Aspects对NSUserDefaults进行swizzle?

可以使用Aspects库对NSUserDefaults进行swizzle,以启用UIPopoverControllerPaintsTargetRect键,但仅在iOS 7中有效。

调试过程中有哪些有用的标志可以使用?

有一些标志可以打印触摸、手势、动画等的详细日志,这些标志在文章中有列出。

使用fishhook技术的目的是什么?

使用fishhook技术是为了重定向MGGetBoolAnswer的调用,以手动返回YES,获取更多调试信息。

➡️

继续阅读