【问题标题】:Making a Theos hook into a particular category of a class使 Theos 挂钩到类的特定类别
【发布时间】:2014-12-07 08:19:50
【问题描述】:

通常,当您进行调整并想挂接到应用程序时,您会执行以下操作:

%hook foo

//code    

%end

但现在我有一个 @interface 有一个奇怪的名字:@interface NSString (foo),我不知道如何挂钩。我试过这个:

%hook NSString (foo)



%end

但这会报错:

Tweak.xm:12:3: 错误:C++ 需要所有声明的类型说明符
(富)
〜^Tweak.xm:12:18:错误:预期';'在顶级声明者之后 (foo):

【问题讨论】:

  • 有更新吗?
  • 不抱歉,没什么

标签: ios objective-c jailbreak theos logos


【解决方案1】:
@interface NSString (foo)

只是声明了一个名为“foo”的自定义类别,它允许将其他方法声明为原始 NSString 类的一部分。您可以使用标准徽标挂钩,就好像后面的方法属于 NSString 类一样。一个大的例外是没有类类别的实例变量。这意味着 MSHookIvar 将不起作用。您的问题的简单示例 - 假设原始代码是:

@interface NSString (foo)
+(NSString *) someString;
@end

@implementation NSString (foo)
+(NSString *) someString 
{ 
//code that returns a string
}
@end

要覆盖该方法,您可以输入:

%hook NSString
+(NSString *) someString {
//code here
return someNewString;
}
%end

注意:刚刚在 iPhone 上输入并没有编译它,但它应该可以工作,或者至少这个概念应该更有意义。只需谷歌“使用 obj c 苹果文档自定义现有类”以获取有关类类别的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多