Objective c 有没有办法查看在方法中声明了哪些变量?

Objective c 有没有办法查看在方法中声明了哪些变量?,objective-c,variables,tweak,theos,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; 当我挂接到方法中时,有没有办法转储在该方

我正在对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");
}
-(id)makeALabel{
%奥利格;
//以某种方式获得声明的标签名称
UILabel*label=MSHookIvar(self,“我想要的名字”);
}


需要知道函数、方法或对象中声明的变量的值表示设计不好。它违背了面向对象编程的三大原则之一的封装。答案是否定的

您试图做的事情可以通过更改需求的设计、创建一个类和IVAR来完成,这些类和IVAR可以在方法中使用,只是为了替换局部变量


然后您可以使用
Objective-C运行时
访问类的IVAR/属性/方法。

我对此表示严重怀疑。局部变量由编译器优化,甚至可能不作为不同的实体“存在”。你为什么认为你需要查看局部变量的名称?除此之外,它会腐蚀你的牙齿。@Hot我很抱歉。。。我不明白。恐怕我也不知道你是在笑我的答案还是在笑我(我们在笑什么?)。如果是前者,你认为我的答案错了——很可能是——我希望你直接告诉我。:)哦,当人们开始封装时,我的马鞍下会有一点毛刺,等等。封装当然有它的位置(也是一个非常重要的位置),但肯定有一些时候它应该被扔出窗外。但在这种情况下,OP要求的东西可能没有意义(即,这不是一个确定的时间),他可能需要一点“帮助”来理解这一点。(因此答案是两者兼而有之。)