2009-09-03 57 views
4

我甚至不確定,例如,如果我可以像普通變量一樣使用它。似乎沒有可變的版本。可變意味着它的價值可以改變嗎?有人可以發佈NSNumber的完整示例用法嗎?

+1

'mutable'意味着它的值可以改變; 「不可變」意味着它不能改變價值。 – fbrereto 2009-09-03 23:27:44

回答

6

你是什麼意思的「完整的例子使用」嗎?你能給出你想要的那種例子的背景嗎?

作爲「正常」變量使用某些東西是什麼意思?

你可以得到一個NSNumber或者通過使用numberWithXXX功能,它返回一個自動釋放的對象,或通過執行標準alloc/init

NSNumber* myAllocedNumber = [[NSNumber alloc] initWithFloat:0.0f]; 
// ...use it... 
[myAllocedNumber release]; 

NSNumber* myAutoreleasedNumber = [NSNumber numberWithFloat:0.0f]; 

以後,您可以更改您的指針指向,但您無法更改該值:

NSNumber* myAutoreleasedNumber = nil; 
myAutoreleasedNumber = [NSNumber numberWithFloat:0.0f]; 
// ...use it... 
myAutoreleasedNumber = [NSNumber numberWithInt:1000]; 
+0

所以...我無法改變它本身的價值。但我可以給它分配一個不同的nsnumber。整齊。好。這是有道理的。你幾乎回答了它。當我完成它時,我必須使用釋放方法? – Neo42 2009-09-04 00:16:58

+1

如果您使用了alloc,或者您保留了一個對象,則只能使用release。在我上面的例子中,如果你需要保留一段時間,你可以在myAutoreleasedNumber上使用retain。 – 2009-09-04 00:45:58

0

你總是可以分配到一個不變的變量不同的對象引用,這樣工作的:

NSNumber *intKey; 

     NSMutableArray *backToString =[[NSMutableArray alloc] init]; 

     while ((intKey = [enumerator nextObject])) { 
      //(NSNumber *)integer = [key integerValue]; 
      [backToString addObject:[intKey stringValue]]; 
      // code that uses the returned key 
     } 
相關問題