2010-09-13 15 views
7

की एक प्रति बनाएं मैं एनएसओब्जेक्ट कैसे ले सकता हूं कि मैंने सभी विशेषताओं को सेट किया है और उसके बाद इसे स्मृति के किसी अन्य ब्लॉक में कॉपी करें जिसे एक सरणी उपयोग कर सकती है ताकि मैं मूल का उपयोग कर सकूं?एनएसओब्जेक्ट

उत्तर

7

संक्षेप में, आप नहीं करते हैं।

यदि आप ऑब्जेक्ट को सरणी में रखना चाहते हैं और फिर एक नया ऑब्जेक्ट बनाना चाहते हैं, तो ठीक उसी तरह करें; addObject: सरणी और alloc/init एक नया है।

यदि आप पूछ रहे हैं कि आप किसी ऑब्जेक्ट को कैसे कॉपी करते हैं, तो कहें, एक यादृच्छिक malloc() कहीं ब्लॉक करें - कहें, एक सरणी के बीच में - तो यह एक बहुत ही अलग मुद्दा है। यह तकनीकी रूप से किया जा सकता है, लेकिन मूल रूप से ऐसा कोई नहीं करता है क्योंकि ढांचे और रनटाइम इसके लिए डिज़ाइन नहीं किए गए हैं।

आपकी विशिष्ट आवश्यकताओं के बारे में और जानने के बिना, अधिक जानकारी में जाना असंभव है।

+0

यहां एक धागा है कि मैंने शुरू किया कि टीसी ने मुझे मदद की लेकिन मुझे सभी तरह से मदद नहीं की: http://stackoverflow.com/questions/3697072/well-using-nsxmlparser-the-values-inside-an- सरणी-सब-सेट-टू-द-एंड-एंट्री – Chris

+0

ठीक है - मैं देखता हूं कि आपका असली सवाल क्या है। – bbum

+0

मैंने इसे अभी सब कुछ समझ लिया, लेकिन अब मैं डेट ऑब्जेक्ट लीक कर रहा हूं। – Chris

7

किसी ऑब्जेक्ट की एक प्रति बनाना इसे copy संदेश भेजकर किया जाता है। यह केवल उन वर्गों के उदाहरणों पर काम करता है जो NSCopying प्रोटोकॉल को लागू करते हैं।

एक अच्छा अवलोकन के लिए Implementing Copy पढ़ें। फिर कुछ और पृष्ठभूमि जानकारी के लिए Implementing NSCopying Considered Harmful पढ़ें।

+0

यह सवाल का जवाब नहीं देता है; वह वस्तु को एक सरणी में बाइट-कॉपी करना चाहता है और फिर मूल का पुनः उपयोग करना चाहता है। – bbum

+0

ऐप्पल लिंक अब काम नहीं करता – AsifHabib

+0

यह सवाल का जवाब देता है क्योंकि ओपी "बाइट-कॉपी" के बारे में विशिष्ट नहीं है। ऐसा लगता है कि [अद्यतन दस्तावेज] (https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/CopyFunctions.html#//apple_ref/doc/uid/20001149-CJBEJBHH) प्रतिलिपि बनाने पर (जो अजीब है कि [नवीनतम संशोधन] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/RevisionHistory.html) माना जाता है कि यह उत्तर पूर्ववत करता है)। – jkoreska

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

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