參考鏈結定義logos wiki
logos是theteosdevelopment套件的乙個元件,它允許使用一組特殊的預處理器指令輕鬆而清晰地編寫方法掛鉤**。
概述logos提供的語法極大地簡化了mobilesubstrate擴充套件(「tweaks」)的開發,它可以在整個os中鉤住其他方法。在這種情況下,「方法鉤住」是指用於替換或修改在**上的其他應用程式中找到的類的方法的技術。
標識指令列表
######block level
此類別中的指令開啟乙個**塊,該**塊必須由%enddirective關閉(如下所示)。這些不應該存在於函式或方法內。
%group groupname組用於條件初始化或**組織。分組對於管理與舊**的向後相容性非常有用。以名稱groupname開始乙個鉤子組。組不能在另乙個%groupblock內。所有未分組的掛鉤都在隱式「未分組」組中。如果沒有其他組,將為您初始化未分組的組。您可以使用%init指令手動初始化它。其他組必須使用%init(groupname)指令初始化。
%group ios8
%hook ios8_specific_class
// your code here
%end // end hook
%end // end group ios8
%group ios9
%hook ios9_specific_class
// your code here
%end // end hook
%end // end group ios9
%ctor
else
}
%hook classname開啟類名稱dclassname的掛鉤塊。可以在%groupblock中。下面是乙個簡單的例子:-(
*nslog);
%orig;
// call the original implementation of this method
return;}
%end
%new通過在方法定義上方新增此指令,將新方法新增到掛接類或子類中。signatureis是新方法的objective-c型別編碼;如果省略,則將生成乙個新方法。必須在%hook鉤塊內。%new(signature)
%subclass classname: superclass子類塊-該類在執行時建立,並用方法填充。ivar還沒有被支援(使用關聯物件)。對於超類中不存在的方法,需要%new。要例項化新類的物件,可以使用%coperator。可以在%group block中。下面是乙個例子
%subclass myobject
:nsobject
-(id)
init
//the following two new methods act as `@property (nonatomic, retain) id somevalue;`
%new
-(id)somevalue
%new
-(void)setsomevalue:
(id)value
%end
%ctor
%property (nonatomic|assign|retain|copy|weak|strong|getter|setter) type name;將乙個屬性新增到一%subclass個子類,就像您將用@ propertyto乙個普通oc子類一樣,以及向%hook中的現有類新增新屬性。必須在%subclass %hook中。
關閉組/鉤子類塊。
class的用法(未完待續。。。)
一下純屬個人的理解,肯定有不是很正確的地方,望指出,感謝!class是乙個類似於struct的乙個東西,區別就是class中可以 儲存 函式,並且在class中使用,class中的內容可以分為三種狀態 1.public 共有內容,任何人都可使用 2.private 個人私有內容,只有該class本身...
nginx 未完待續
yum install y pcre yum install y pcre devel yum install y openssl yum install y openssl devel yum install y zlib yum install y gccyum安裝 yum install y ...
sqlparse(未完待續)
sqlparse.split sql,encoding none sql 包含乙個或多個sql語句的字串 encoding 語句的編碼 可選 sql select from foo select from bar sql list sqlparse.split sql print sql list ...