关于C#:如何在调试时更改XCode中的NSNumber值?

How to change NSNumber value in XCode while debugging?

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

1
2
3
@interface C : NSObject {
    NSNumber* _n;
}

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

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

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

1
expr _n = @1

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

我也试过了

1
expr _n = [NSNumber numberWithInt:1]

但是这给了同样的东西。


这对我有用:

1
2
3
4
(lldb) expr -- _n = (NSNumber *)[NSNumber numberWithInt:123]
(NSNumber *) $0 = 0x0000000000007b83 (int)123
(lldb) po _n
(NSNumber *) $1 = 0x0000000000007b83 123

需要--来标记命令选项的结束和"原始"输入的开始。

严格来说,这不会更改现有NSNumber的值,但会将新的NSNumber对象分配给_n。 但NSNumber对象是不可变的,因此无论如何都不可能改变它们的值。


尝试使用此行:

1
po _n = @(123)