如何在调试时更改XCode中的NSNumber值?

xma*_*tin 3 debugging xcode objective-c nsnumber

我的类有一个成员变量,它是一个NSNumber,如下所示:

@interface C : NSObject {
    NSNumber* _n;
}
Run Code Online (Sandbox Code Playgroud)

在调试期间,我在断点处停止,我想更改NSNumber的值.我该怎么做?

我尝试了XCode变量窗口,但这不起作用.

例如,我尝试了XCode调试控制台

expr _n = @1
Run Code Online (Sandbox Code Playgroud)

但这给出了奇怪的消息错误:从不兼容的类型'NSNumber*'分配'NSNumber*' - 不开玩笑!试试吧.

我也试过了

expr _n = [NSNumber numberWithInt:1]
Run Code Online (Sandbox Code Playgroud)

但是这给了同样的东西.

Mar*_*n R 5

这对我有用:

(lldb) expr -- _n = (NSNumber *)[NSNumber numberWithInt:123]
(NSNumber *) $0 = 0x0000000000007b83 (int)123
(lldb) po _n
(NSNumber *) $1 = 0x0000000000007b83 123
Run Code Online (Sandbox Code Playgroud)

所述--需要标记的命令选项和"原始"输入的开始结束.

严格地说,这不会改变现有的值NSNumber,而是指定一个新NSNumber对象_n.但是NSNumber对象是不可变的,所以无论如何都不可能改变它们的值.