繁体   English   中英

%new & %class 的目的是什么?

[英]What is the purpose of %new & %class?

就 MobileSubstrate 调整而言,%new 和 %class 是什么意思? 例如:

%class TPBottomLockBar;

%new(v@:)

对不起,双重问题!

这些都是 Logos 结构。 %new用于在运行时向 class 添加新方法,其语法为%new(typeencoding) 您可以在 Apple 的 Objective-C 运行时文档中获取有关 Objective-C 类型编码的信息。 请注意,这些方法的前两个 arguments 始终是 id 和 SEL,因此您的类型编码的后两个字符必须是“ @: ”。 第一个字符是返回类型,其他任何字符都是您的自定义 arguments 集。

例如,这是一个非常无用的方法:

%hook NSMutableString
%new(v@:)
- (void)appendAwesomeThings {
    [self appendString:@"Awesome."];
}
%end

(这实际上可能不起作用,因为 NSString 是一个 class 集群,但它同样可以作为示例!)

%class是一个不推荐使用的指令,用于前向声明要在运行时使用的 class; 它已被替换为%c(ClassName) ,它将被内联使用。 例如,

[[%c(NSString) alloc] initWithString:@"Cool."];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM