当我在Xcode的断点停止时,我可以看到NSString变量的值.我怎样才能改变它们?我可以更改int或double变量,但不能更改NSString.
Mik*_*keG 83
您可以在调试控制台中执行此操作.说你有NSString* myVar.在控制台中(gdb),键入后set myVar = @"My new string".如果您正在使用(lldb),请改用等效表达式expr myVar = @"My new string".
这可能无法在变量面板中正确显示,但您可以通过进入po myVar控制台来验证该值.您的代码应该获取新值.
有关使用的一些很好的信息expr,请查看此StackOverflow帖子.
您可以但必须从调试器命令提示符调用代码.例如,假设您在此行之后立即触发断点:
NSString *myString = @"My current string";
Run Code Online (Sandbox Code Playgroud)
然后在(gdb)提示符下键入:
call myString = @"My new string"
Run Code Online (Sandbox Code Playgroud)
您可以po myString在更改字符串之前和更改字符串之后验证它是否已更改.
另一个例子:假设您想要更改视图控制器的标题.你可以使用setter.*注意:调试器命令行不支持点表示法.例如,让视图加载,然后在视图控制器的生命周期内的某处设置断点.然后这样做:
call (id)[self setTitle:@"New Title"]
Run Code Online (Sandbox Code Playgroud)
继续运行该程序,您应该看到视图控制器的标题更新.