4

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

%class TPBottomLockBar;

%new(v@:)

对不起,双重问题!

4

1 回答 1

16

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

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

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

(这实际上可能不起作用,因为 NSString 是一个类集群,但它也可以作为一个例子!)

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

[[%c(NSString) alloc] initWithString:@"Cool."];
于 2011-07-21T04:10:45.137 回答