我在theos中进行调整,需要查看一些变量的名称。
说一个方法如下:
- (UILabel*)makeALabel {
UILabel *name_that_i_want = [[UILabel alloc] init];
[name_that_i_want setText:@"abcdefg"];
return name_that_i_want;
}
当我查看此方法的标题时,我会看到:
-(id)makeALabel;
当我挂钩时,有没有办法转储在该方法中声明的变量?
-(id)makeALabel {
%orig;
//somehow get name of the label declared
UILabel *label = MSHookIvar<UILabel *>(self, "name_that_i_want");
}
答案 0 :(得分:1)
没有!
需要知道函数或方法或对象中声明的变量值表示设计不良。它违背了 encapsulation 面向对象编程的三个主要原则之一。
答案 1 :(得分:0)
答案是否。
您要做的事情可以通过更改您的需求设计来完成,方法是创建一个可以在方法中使用的Class和ivars,只是为了替换局部变量。
然后,您可以使用Objective-C Runtime
访问Class的ivars / properties / methods。