मुझे आश्चर्य है कि यह प्रदर्शन या स्मृति खपत को बहुत प्रभावित करता है। मुझे एक एनएसएमयूटेबलएरे की ज़रूरत है, और शुरुआत में मैं केवल अनुमान लगा सकता हूं कि कितनी वस्तुओं को जोड़ा जाएगा। लगभग 3 से 5 शायद। तो मैं इसे इस तरह बना देता हूं:यदि मैं क्षमता = 50 की बजाय क्षमता = 3 के साथ एनएसएमयूटेबलएरे बनाता हूं तो इससे कितना फर्क पड़ता है?
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:3];
उदाहरण के लिए 50 से अधिक की क्षमता के साथ इसे बनाने के दौरान, वास्तव में क्या होता है? क्या यह 1 की क्षमता के साथ बनाने का बुरा विचार होगा, जब यह जानकर कि कम से कम 20 तत्व होंगे? या क्या इससे कोई सिरदर्द लेने के लिए पर्याप्त कोई फर्क नहीं पड़ता? मुझे अपने ऐप में इनमें से 10 सरणी पसंद हैं और उन्हें सभी को शुरुआत में लोड करना होगा।
महान विवरण! अन्य उत्तरों भी महान थे। एक स्वीकार्य के रूप में इसे चुनना कभी मुश्किल नहीं पाया। सभी मतदान किया। सबको शुक्रीया! –
सभी उचित सम्मान के साथ, मुझे लगता है कि यह उत्तर गलत है। यद्यपि क्षमता का उपयोग कुछ मामलों में संकेत देने के लिए किया जाता है, लेकिन ऐसा नहीं है कि एक गीगाबाइट की क्षमता वाले एक परिवर्तनीय सरणी बनाने से तुरंत स्मृति की गीगाबाइट आवंटित की जाएगी। यदि आप मुझ पर विश्वास नहीं करते हैं, तो इसे स्वयं आज़माएं। एनएसएमयूटेबलएरे * bigArray = [[NSMutableArray alloc] initWithCapacity: 1024 * 1024 * 1024]; अगर (! BigArray) { एनएसएलओजी (@ "ऐरे नहीं बनाया गया था!"); } अन्य { एनएसएलओजी (@ "हाँ, यह बनाया गया था।"); } यदि आप वास्तव में इस सरणी को भरते हैं, तो आपको स्मृति उपयोग में वृद्धि दिखाई देगी। इससे पहले नही। – peterb
initWithCapacity के लिए प्रलेखन कहता है कि यह "आइटी आइटम्स ऑब्जेक्ट्स को पकड़ने के लिए पर्याप्त मेमोरी के साथ प्रारंभ की गई सरणी" देता है। क्या पीटरबर्ग ने देखा है और दस्तावेज के दावों के बीच कुछ विसंगति दिखाई देगी। – fbrereto