2009-07-01 11 views
30

का मूल्य बदलना एनएसएनंबर में निहित मान को बदलने के बाद कोई अलग NSNumber को इंगित किए बिना इसे बदलने का कोई तरीका है?एनएसएनंबर

 
NSNumber *num = [NSNumber numberWithInt:0]; 
num = [NSNumber numberWithInt: 1]; // now num points to a different object, which I don't want. I want it the same object still, but different value. 

उत्तर

41

एनएसएनंबर अपरिवर्तनीय है। असल में, यह NSValue का उप-वर्ग है, और सभी NSValues ​​अपरिवर्तनीय हैं।

+1

यह थोड़ा विचित्र है कि कोई NSMutableNumber –

+1

नहीं है वास्तव में, आमतौर पर जब आप एक "उत्परिवर्तनीय" संख्या चाहते हैं जो आप एक आदिम का उपयोग कर समाप्त करते हैं। एनएसएनंबर सीरियलाइजेशन, एक शब्दकोश कुंजी होने और उन पंक्तियों के साथ चीजों के लिए अधिक उपयोगी है। –

+4

@MarcCharbonneau निश्चित रूप से ऐसे समय होते हैं जब आप एक संख्या को उत्परिवर्तनीय बनाना चाहते हैं। मैं बस एक में आया ... और इसके बजाय बस एक एनएसएमयूटेबलस्ट्रिंग में अपना नंबर संग्रहीत कर दिया (मुझे एक अपरिवर्तनीय NSDictionary में एक म्यूटेबल पूर्णांक को स्टोर करने के लिए बस अपनी खुद की कक्षा को परिभाषित करने पर परेशान नहीं किया जा सका)। –

10

नहीं, आप NSNumber के मूल्य को नहीं बदल सकते हैं।

उदाहरण के लिए, this post देखें।

संबंधित मुद्दे