前言
- Theos创建tweak工程,默认生成的源文件是tweak.xm,而Logos即是其所用的语法
- 本文直接使用MonkeyDev创建项目演示Logos使用(MonkeyDev包含了Theos)
- 查看Logos文档(当然要有英语基础啦)-->Logos文档
基本语法
Logos语法分为三大类
-
Block level
这一类型的指令会开辟一个代码块,以%end结束。
%group、%hook、% subclass 、 %end -
Top level
这个TopLevel指令不放在BlockLevel中。
%config、%hookf、%ctor、%dtor -
Function levell
这一块的指令就放在方法中。
%init、%class、%c、 %orig、%log
Logos语法常用指令
-
%hook
指定需要hook(勾住)的class,必须以%end结尾。 -
%log
能够输出日志,输出方法调用的详细信息,可以%log([(),…..])的格式追加其他打印信息。 -
%orig
该指令在函数内部使用,表示调用原本的函数。 -
%group
用于将%hook分组,便于代码管理及按条件初始化分组,必须以%end结尾。 一个%group可以包含多个%hook,所有不属于某个自定义group的%hook会被隐式归类到%group_ungrouped中。 -
%init
该指令用于初始化某个%group,一般在%ctor内调用;如果带参数,则初始化指定的group,如果不带参数,则初始化_ungrouped。只有调用了%init,对应的%group才能起作用。 -
%ctor
构造函数 Tweak的constructor,完成初始化工作;如果不显示定义,Theos会自动生成一个%ctor,并在其中调用%init(_ungrouped) -
%dtor
析构函数 -
%c
类似getClass函数,获得一个类对象。一般用于调用类方法。 -
%new
给hook的Class添加新函数