Cycript 使用攻略

几周前答应了狗神说要研究下cycript并分享出来,最近公司也没事就研究了下顺便也把JS的基本语法看了下.第一次分享,望各位多多指点,cycript当然很多功能,我在此也只是抛砖引用。

1、cycript简介
在cycript的manual(http://www.cycript.org/manual/#ac7f71cc-a3e2-43ef-8176-1bf4e2705cf3)上的介绍是其 Cycript includes a complete implementation of the JavaScript grammar并且完全ES6标准。在使用过程中,个人感觉cycript对JS的支持力度要大于OC,所以尽量在使用过程中多使用JS来运行不会那么容易出错。

2、书上已经介绍了很多Cycript的基本用法了,我这里就写下几个书上没有但也比较常用的几个功能,抛砖引用.

2.1:列举出图层树后,我们一般会通过V去找C,但如果图层树很深的话,可能要自己手动打好几次nextResponder,有了JS,我们就可以自己写个function,不必每次都去手动了

还有其它的function,大家可以自由发挥了。获取当前类的methods,ivars,properties等等。。。

2.2:使用cycript HOOK 方法
有了这个功能就不必每次都去写tweak了:joy:。可以随时调试,这块需要你了解了JS的原型链,熟悉了OC,JS看着就非常简单了。

第一步:通过构造函数的prototyper取出要hook的函数:orig
第二步: 对要hook的函数进行重新定义
第三步:通过call方法调用原型方法,后面添加自己需要的内容。

这种形式只能hook类的实例方法,要hook类方法,要将此处的类替换成元类。

3.Categories
这个就是OC的类别,也可以在cycript里使用。

4 Likes

nice,很棒

这些封装的方法,怎样存储在一个地方,下次重新连接手机后,还能使用呢?

  1. /usr/lib/cycript0.9路径下编写自定义cy文件
  2. cy# @import 你的cy文件

感谢,你写cy文件是用什么写的,xcode吗

sublime