有没有办法看到方法中声明了哪些变量?

时间:2013-06-26 17:28:52

标签: objective-c variables tweak theos

我在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");
}

2 个答案:

答案 0 :(得分:1)

没有!

需要知道函数或方法或对象中声明的变量值表示设计不良。它违背了 encapsulation 面向对象编程的三个主要原则之一。

答案 1 :(得分:0)

答案是

您要做的事情可以通过更改您的需求设计来完成,方法是创建一个可以在方法中使用的Class和ivars,只是为了替换局部变量。

然后,您可以使用Objective-C Runtime访问Class的ivars / properties / methods。