2011-09-03 19 views
43

क्या NSMutableArray से शुरू करने के लिए कोई ऑब्जेक्ट जोड़ने का कोई प्रभावी तरीका है? मैं objective C में एक अच्छी डबल एंडेड कतार की तलाश में हूं, साथ ही साथ काम करेगा।एक एनएसएमयूटेबलएरे की शुरुआत में कोई ऑब्जेक्ट जोड़ें?

उत्तर

95

सीधे शब्दों में

[array insertObject:obj atIndex:0]; 

चेक documentation

+2

इस विधि का उपयोग करते समय विचार करने के लिए कुछ चीजें। यदि सरणी खाली है, तो आप केवल इंडेक्स 0 पर ऑब्जेक्ट डाल सकते हैं। इसलिए, यदि सरणी में 5 ऑब्जेक्ट हैं, तो आप ऑब्जेक्ट को 5 वें इंडेक्स पर सम्मिलित कर सकते हैं। इंडेक्स 6 पर मूल्य डालने का प्रयास अपवाद में होगा। – EmptyStack

+36

यदि सूचकांक पहले से ही कब्जा कर लिया गया है, तो सूचकांक और उससे परे वस्तुओं को कमरे बनाने के लिए 1 को अपने सूचकांक में जोड़कर स्थानांतरित किया जाता है। – Malloc

+0

@ मॉलोक आपने यहां एक महत्वपूर्ण बिंदु बनाया है, धन्यवाद –

4

के रूप में अन्य उत्तर का उल्लेख किया है सिर्फ insertObject:atIndex विधि का उपयोग करें। यह कुशल है क्योंकि एनएसएआरआरएआर में जरूरी स्मृति शामिल नहीं है यानी तत्वों को हमेशा तब तक नहीं ले जाया जाता है जब सम्मिलन विशेष रूप से बड़े सरणीओं के लिए होता है यानी कई सौ तत्व तत्व होते हैं। this blog देखें यह भी ध्यान दें कि उद्देश्य सी में केवल पॉइंटर्स सरणी में स्थानांतरित हो जाते हैं, इसलिए memmove को आंतरिक रूप से C++ के विपरीत उपयोग किया जा सकता है जहां प्रतियां बनानी होंगी।

भी this SE question

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