我的类有一个成员变量,它是一个NSNumber,如下所示:
@interface C : NSObject {
NSNumber* _n;
}
在调试期间,我在断点处停止,我想更改NSNumber的值。我该怎么办?
我尝试了XCode变量窗口,但这不起作用。
我尝试过XCode调试控制台,例如
expr _n = @1
但是这给出了奇怪的消息错误:从不兼容的类型'NSNumber *'分配给'NSNumber *' - 不开玩笑!试试吧。
我也试过
expr _n = [NSNumber numberWithInt:1]
但是这给了同样的东西。
答案 0 :(得分:5)
这对我有用:
(lldb) expr -- _n = (NSNumber *)[NSNumber numberWithInt:123]
(NSNumber *) $0 = 0x0000000000007b83 (int)123
(lldb) po _n
(NSNumber *) $1 = 0x0000000000007b83 123
需要--
来标记命令选项的结束和“原始”输入的开始。
严格地说,这不会更改现有NSNumber
的值,但会为NSNumber
分配新的_n
对象。但是NSNumber
对象是不可变的,所以无论如何都不可能改变它们的值。
答案 1 :(得分:1)
尝试使用此行:
po _n = @(123)