2009-09-03 11 views
4

通常の変数のように使用できるかどうかはわかりません。変更可能なバージョンは表示されません。変更可能なのは値が変更できるということですか?誰かがNSNumberの完全な使用例を投稿できますか?

+1

'mutable'はその値を変更できることを意味します。 'immutable'は値を変更できないことを意味します。 – fbrereto

答えて

6

をあなたは「完全な例の使用法」とはどういう意味ですか?あなたが探している種類の例の文脈を与えることができますか?

何かを「通常の」変数として使用することはどういう意味ですか?

あなたは自動解放オブジェクトを返しますnumberWithXXXの機能を使用することにより、または標準alloc/initを行うことのいずれかによってNSNumberを取得することができます:あなたのポインタが指している場所を後から変更することができ

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を割り当てることができます。きちんとしたOK。それは理にかなっている。あなたはそれにかなり答えました。私はそれをやったときにリリースメソッドを使用する必要がありますか? – Neo42

+1

allocを使用した場合、またはオブジェクトを保持している場合のみ、リリースを使用してください。上記の例では、myAutoreleasedNumberにretainを使用すると、しばらくそれを保つ必要がある場合があります。 –

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 
     } 
関連する問題