2012-05-16 12 views
5

बनाना मैं बस इस तरह एक सरणी की घोषणा कर सकते हैं:सी में एक खाली NSArray

int array[500]; 

आकार 500 जो फिर बाद में भरा जा सकता है की एक सरणी घोषित करने के लिए। क्या एनएसएआरएआरई में वही काम करने की संभावना है? मैं एनएसएमयूटेबलएरे के लिए समझता हूं, "create" और खाली सरणी के लिए arrayWithCapacity क्लास विधि है (या कम से कम सरणी को भरने के लिए घोषित करें)। क्या एनएसएआरएआरई के लिए कुछ ऐसा करने का कोई तरीका है, क्योंकि मुझे पता है कि मेरी सरणी का सटीक आकार मैं बाद में "फॉर" लूप में सामग्री भरना चाहता हूं।

धन्यवाद

उत्तर

1

तकनीकी तौर पर, int array[500]; एक खाली सरणी का निर्माण नहीं करता है - यह एक सरणी शून्य से भरा बनाता है। चूंकि NSArray एस अपरिवर्तनीय है, इसलिए आपको NSMutableArray का उपयोग करने की आवश्यकता है यदि आप बाद में इसे पॉप्युलेट करने में सक्षम होना चाहते हैं।

आप एक विशिष्ट क्षमता के साथ एक सरणी बना सकते हैं, और उसके बाद इस तरह इसे में वस्तुओं डाल दिया,:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:500]; 
for (int i = 0 ; i != 500 ; i++) { 
    [array addObject:@(i)]; 
} 

NSMutableArray के बाद से एक NSArray वापसी है, तो आप NSMutableArray* के रूप में एक विधि में यह बना सकते हैं, और उसके बाद यह कॉलर्स को NSArray* के रूप में।

+0

इस उत्तर में एक समस्या है। जैसा कि '[NSArray arrayWithObjects: count:]': के लिए प्रलेखन में बताया गया है: "गिनती ऑब्जेक्ट से मूल्यों की संख्या है जो नई सरणी में शामिल करने के लिए सी सरणी है। यह संख्या नई सरणी की गणना होगी। ** यह आवश्यक है वस्तुओं में तत्वों की संख्या से नकारात्मक या अधिक नहीं ** ** " –

+0

@ डेवपैक ओएमजी, मुझे विश्वास नहीं है कि किसी ने इससे पहले कभी नहीं देखा है! टिप्पणी के लिए धन्यवाद! – dasblinkenlight