ios - modifying copy of array object affect object stored in the array -


मेरे पास ऑब्जेक्ट प्रतिलिपि मुद्दा है।

  @property (nonatomic, strong) ITEM * editingItem ; Self.editingItem = शून्य; Self.editingItem = [[self.ItemsArray objectAtIndex: indexPath.row-1] कॉपी]; Self.editingrowIndex = indexPath.row;   

जब मैं किसी ऑब्जेक्ट को संपादन ऑब्जेक्ट को तालिका पंक्ति सेसिस में लेता हूं और इसे टेक्स्टफील्ड प्रतिनिधियों में संपादित करना शुरू करता हूं, तब जब मैं ऑब्जेक्ट प्रॉपर्टी वैल्यू बदलता हूं तो यह ऑरेजेन्ट में एक ऑरेंज में बदल जाती है। लेकिन मैं केवल संपादन करना चाहते हैं आईटम ऑब्जेक्ट में नए मान होने चाहिए। लेकिन सरणी के नवीनीकरण के बिना नए मानों को संपादन करने के लिए एटम में ऑब्जेक्ट में संग्रहीत किया जा रहा है।

ओपी द्वारा प्रदत्त कार्यान्वयन, अन्य उत्तर में गलत है, क्योंकि यह उदाहरण चर की प्रतिलिपि नहीं करता है; बल्कि यह उनके लिए एक और संदर्भ बनाता है यह उन मुद्दों की व्याख्या करेगा जो ओपी अपने प्रश्न में देख रहा है (जहां उस कोड को प्रस्तुत किया जाना चाहिए था, और अलग जवाब में नहीं)।

यहां एक बेहतर कार्यान्वयन है:

 < कोड> - (आईडी) कॉपी विथ ज़ोन: (एनएसझेन *) क्षेत्र {आइटम * प्रतिलिपि = [[मद सभीको विथ ज़ोन: क्षेत्र] इनिट]; कॉपी- & gt; _nombre: [_nombre कॉपी]; Copy- & gt; _linea = [_linea] कॉपी]; कॉपी- & gt; _tags = [_tags कॉपी]; Copy- & gt; _htmlSource = [_htmlSource कॉपी]; वापसी प्रति; }   

ध्यान दें कि अन्य क्रियान्वयन में प्रदान की जाने वाली आवृत्ति प्रतिलिपि विवरण सही है (एक तरफ लापता copy कॉल से), लेकिन यह निजी के लिए काम नहीं करेगा उदाहरण चर (एक आम घटना), इसलिए मैं हमेशा copy- & gt; _instanceVariable = [_instanceVariable copy]; NSObject के अलावा अन्य तो पहले कथन होना चाहिए:

  आइटम * copy = [super copyWithZone: zone];   

के बजाय:

  आइटम * copy = [[आइटम allocWithZone: zone] init];   

और नोट:

मुझे यह बहुत संदेह है कि आप NSMutableString वस्तुओं को उदाहरण चर के रूप में रखते हैं। यह मेरे अनुभव में काफी असामान्य है, अस्थायी स्ट्रिंग्स के निर्माण के लिए उन्हें केवल अस्थायी वस्तुओं के रूप में इस्तेमाल किया था। मुझे संदेह है कि आप इस डेटा को रखने के लिए सही डेटा प्रकार का उपयोग नहीं कर रहे हैं।

Comments

Popular posts from this blog

Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel -

multithreading - PhantomJS-Node in a for Loop -

c++ - MATLAB .m file to .mex file using Matlab Compiler -