%new& amp;的目的是什么? %类?

时间:2011-07-21 02:29:06

标签: iphone objective-c ios tweak

%new和%class在MobileSubstrate调整方面意味着什么?例如:

%class TPBottomLockBar;

%new(v@:)

对不起双重问题!

1 个答案:

答案 0 :(得分:16)

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

举个例子,这是一个非常有用的方法:

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

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

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

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