2011-04-23 13 views
20

की प्रतिलिपि कैसे करें मैं बस एनएसएमयूटेबलएरे की प्रतिलिपि बनाने के बारे में जानना चाहूंगा ताकि जब मैं सरणी बदलूं, तो मेरा संदर्भ बदल नहीं जाता है। मैं एक सरणी कैसे कॉपी कर सकता हूं?एनएसएमयूटेबलएरे

उत्तर

47

वहाँ ऐसा करने के लिए कई तरीके हैं:

NSArray *newArray = [NSMutableArray arrayWithArray:oldArray]; 

NSArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray] autorelease]; 

NSArray *newArray = [[oldArray mutableCopy] autorelease]; 

ये सब, उथले प्रतियां पैदा करेगा, हालांकि।

NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:oldArray copyItems:YES] autorelease]; 

टिप्पण लायक:: गहरी प्रतियां इस बजाय उपयोग के लिए (संपादित आप एआरसी साथ काम कर रहे हैं, तो बस autorelease के लिए कॉल को हटा दें।)

स्पष्ट कारणों के लिए बाद वाले को NSCopying लागू करने के लिए आपके सभी सरणी तत्वों की आवश्यकता होगी।

+0

उथले और गहरी प्रतियों से आपका क्या मतलब है ?? – Supertecnoboff

+0

@Supertecnoboff: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Collections/Articles/Copying.html – Regexident

+0

धन्यवाद, बहुत रोचक। मैं इस अवधारणाओं के बारे में कभी नहीं जानता था। – Supertecnoboff

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