内容提要
最近,我优化了PSPDFKit中的AOP代码,并创建了一个名为Aspects的库。Aspects允许在原始实现前、替代或之后调用代码,简化了手动调用super的操作。在测试中发现iOS 6中的UIImagePickerController存在异常,Apple在iOS 7中修复了该问题。通过反汇编发现,Apple通过遍历视图层次结构来检测popover,没有使用秘密方法。尽管某些私有类无法使用,但我们可以利用Aspects实现自己的检查。
关键要点
-
最近,我优化了PSPDFKit中的AOP代码,并创建了一个名为Aspects的库。
-
Aspects允许在原始实现前、替代或之后调用代码,简化了手动调用super的操作。
-
在测试中发现iOS 6中的UIImagePickerController存在异常,Apple在iOS 7中修复了该问题。
-
通过反汇编发现,Apple通过遍历视图层次结构来检测popover,没有使用秘密方法。
-
尽管某些私有类无法使用,但我们可以利用Aspects实现自己的检查。
延伸问答
Aspects库的主要功能是什么?
Aspects库允许在原始实现前、替代或之后调用代码,简化了手动调用super的操作。
在iOS 6中,UIImagePickerController出现了什么异常?
在iOS 6中,UIImagePickerController出现了'NSInvalidArgumentException'异常,提示必须通过UIPopoverController呈现。
Apple是如何检测popover的?
Apple通过遍历视图层次结构来检测popover,没有使用秘密方法。
Aspects库在调试中有什么用处?
Aspects库在调试中可以帮助开发者更方便地插入代码,进行检查和修改行为。
如何使用Aspects实现自己的检查?
可以通过运行时类查找来全局挂钩,并实现自己的检查逻辑。
Apple在iOS 7中修复了什么问题?
Apple在iOS 7中修复了iOS 6中UIImagePickerController的异常问题。