3

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

@interface C : NSObject {
    NSNumber* _n;
}

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

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

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

expr _n = @1

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

我也试过

expr _n = [NSNumber numberWithInt:1]

但这给出了同样的结果。

4

2 回答 2

5

这对我有用:

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

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

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

于 2013-01-02T23:09:19.247 回答
1

尝试使用这一行:

po _n = @(123)
于 2014-01-13T08:26:30.757 回答