2015-06-25 44 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