-(void) changeString:(NSString*)string
में स्ट्रिंग स्थानीय चर रहा है, मान देने के लिए विधि को संशोधित:
एक तरह से तुम क्या चाहते करने के लिए, एक सूचक के सूचक के पारित करने के लिए है [NSString lowerCaseString]
method के संदर्भ को देखें, आप देख सकते हैं कि यह लोअरकेस वाले वर्णों के साथ एक नई स्ट्रिंग देता है:
रिसीवर के कम निर्धारित प्रतिनिधित्व देता है।
- (NSString *)lowercaseString
क्या अपने कोड बस lowercaseString
कॉल के उत्पादन, जो कोई प्रभाव नहीं है के साथ इनपुट स्ट्रिंग के संदर्भ के ऊपर लिख रहा है है।
-(void) test
{
NSString *stringVar = @"UPPER CASE STRING";
stringVar = [self changeString:stringVar];
NSLog(@"value after changed : %@", stringVar);
}
-(NSString *) changeString:(NSString*)string
{
string = [string lowercaseString];
return string;
}
आप यह समझना होगा कि NSString
अपरिवर्तनीय है तो वहाँ कोई रास्ता नहीं है, संदर्भ फिर नियत के अलावा अन्य की जरूरत है: इस समस्या को हल करने के लिए सबसे अच्छा तरीका है कि आप अपने आप को मूल्य है, जो विधि आसान बना देता है समझने के लिए वापस जाने के लिए के लिए है , एक स्ट्रिंग की सामग्री को बदलने के लिए। हालांकि, आप NSMutableString
का उपयोग कर सकते हैं, जिसे जगह में संशोधित किया जा सकता है।
स्रोत
2012-07-31 10:01:18
बस सुनिश्चित करने के लिए, एआरसी स्मृति पारदर्शी रूप से इस मामले में भी हैंडलिंग, सही संभाल होगा? –
प्रिय ग्रेग, इसका मतलब है डिफ़ॉल्ट रूप से उद्देश्य सी मूल्य तंत्र द्वारा पास का उपयोग करता है? –
@ जोचिम इक्सक्सन: हाँ, एआरसी मेमोरी प्रबंधन को सही तरीके से संभालता है (संकलक आपको चेतावनी देगा अगर यह पता नहीं लगा कि आप क्या कर रहे हैं)। –