如何在XCode中debugging时更改NSString值?
当我停在XCode中断点时,我可以看到NSStringvariables的值。 我怎样才能改变它们? 我可以更改int或双variables,但不是NSString。
您可以在debugging控制台中执行此操作。 假设你有NSString* myVar
。 在控制台中,在(gdb)
,键入set myVar = @"My new string"
。 如果使用(lldb)
,则使用等效expression式expr myVar = @"My new string"
。
这可能不会在variables面板中正确显示,但可以通过将po myVar
input到控制台来validation值。 你的代码应该拿起新的价值。
有关使用expr
一些很好的信息,看看这个StackOverflow后。
您可以但必须从debugging器命令提示符处调用代码。 例如,假设你在这行之后有一个断点:
NSString *myString = @"My current string";
然后在(gdb)提示符下键入:
call myString = @"My new string"
您可以在更改string之前修改po myString
,并在更改之后validation它是否已更改。
另一个例子:假设你想改变视图控制器的标题。 你可以使用setter。 *注意:在debugging器命令行中不支持点符号。 例如,让视图加载,然后在视图控制器的生命周期中的某处设置一个断点。 然后这样做:
call (id)[self setTitle:@"New Title"]
继续运行程序,你应该看到你的视图控制器的标题更新。
对于NSError我使用这个:
(lldb) expression aTempError = (NSError*)[[NSError alloc] initWithDomain:@"MANO" code:1 userInfo:nil]
( https://stackoverflow.com/users/1202867/n8tr )从上面的n8tr的评论显示如何做到这一点。 您只需在您的作业前加“po”就可以了:po myString = @“my_new_string”和po self.title = @“New Title”。