2015-06-25 43 views
1

为什么NSNumber的0不能转换为正确的NSInteger/NSUInteger值?NSNumber与0转换为NSInteger/NSUInteger变为零

NSUInteger a = [@0 unsignedIntegerValue]; // a become nil 

为什么在代码零的上面的行a。它不应该等于0吗?

在控制台:

(lldb) po [@0 intValue] 
0 

(lldb) po [@0 integerValue] 
<nil> 

(lldb) po [@0 unsignedIntegerValue] 
<nil> 

更新:

(lldb) p [@0 unsignedIntegerValue] 
(NSUInteger) $0 = 0 

回答

2

请使用P不PO

(lldb) p [@0 integerValue] 
(NSInteger) $1 = 0 
(lldb) p [@0 intValue] 
(int) $2 = 0 
(lldb) p [@0 unsignedIntegerValue] 
(NSUInteger) $3 = 0 
+0

感谢您的答复。清除自己,我将'@ 0'分配给一个NSUInteger变量,并且它变成了'nil'。有没有建议不要使用NSInteger/NSUInteger? – Alston

+0

[@ 0 integerValue]不是一个对象。你应该使用p值而不是po对象 – dusty