如何在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 myVarinput到控制台来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”。