【发布时间】:2012-10-17 14:06:58
【问题描述】:
我需要在 NSMutableDictionary 中存储一些 bool 值,所以我建立了一个解决方案:使用 [NSNumber numberWithBool] 从 bool 中创建一个对象。 它的值为 YES 可以正常工作,但 NO 有时可以正常工作,有时结果是“不是objective-c 对象”。 我的代码:
$ //sometimes fine, but sometimes "not an objective-c object"
$ NSNumber* nsn = [NSNumber numberWithBool:NO];
我是 Objective-C 的新手,所以如果这是基本问题,我很抱歉,但我真的坚持了下来。 感谢您的帮助。
【问题讨论】:
-
为什么不直接存储 NSNumber 1 或 0(直接使用它们,而不是通过 numberWithBool)然后在条件下使用
[storedNSNumber boolValue] -
这是一个非常简单有效的解决方案,看来我会使用它。但现在我只想了解这种行为 =)
-
将消息
numberWithBool:发送到NSNumber类将始终返回一个对象,特别是__NSCFBoolean的一个实例。问题一定出在其他地方。你什么时候收到“不是objective-c对象”的消息?请发布更多代码。 -
我正在尝试将布尔值放入 NSMutableDictionary,因此我决定使用 NSNumber。所有代码看起来像 $ NSNumber *nsn = [NSNumber numberWithBool:NO]; $ [myDictionary setObject:nsn forKey:@"myKey"];这工作不稳定 - 有时很好,有时不是。我在这行设置了断点,经过一些迭代后我认识到,“nsn”有时是@“0”,有时是。这不取决于任何东西 - 我尝试了很多条件,结果真的是独立的。附言抱歉,我无法创建代码块 - 我正在通过电话发布。
-
谁说它不是一个客观的C对象?调试器?如果是这样,你为什么要关心调试器是否太愚蠢而无法识别对象?相信我,不管别人怎么说,它始终是一个对象。
标签: objective-c boolean nsnumber