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

标签 iphone objective-c ios tweak

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

%class TPBottomLockBar;

%new(v@:)

抱歉重复问题!

最佳答案

这些都是 Logo 结构。 %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."];

关于iphone - %new & %class 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770696/

相关文章:

iphone - 不工作时计数器

ios - 是否有可能将您在消息应用程序中收到的相同消息发送到您的应用程序中?

iphone - 将第一个单元格设置为在 View 加载时突出显示

iphone - 在 native 代码与 UIWebView 不同的电话调用后返回应用程序行为

ios - 将图像集@ 2x和@ 3x大小从Sketch导出到Xcode

ios - Firebase 在模拟器中工作但在 iPhone 上不工作

iphone - 在 iPhone 模拟器中模拟飞行模式

ios - NSDateFormatter 在 IOS10 中返回 nil

ios - 如何完全删除 Xcode 中的命名颜色集?

ios - 通过命令行从 iOS 设备卸载应用程序