मैं के समान कार्य की एक संख्या है निम्नलिखित:कोई म्यूटेबल ऑब्जेक्ट वापस नहीं करने का कोई कारण है जहां किसी की अपेक्षा नहीं की जाती है?
+ (NSArray *)arrayOfSomething
{
NSMutableArray *array = [NSMutableArray array];
// Add objects to the array
return [[array copy] autorelease];
}
मेरा प्रश्न इस विधि की अंतिम पंक्ति के बारे में है: यह बेहतर परिवर्तनशील वस्तु लौट रहा है और एक प्रति कार्रवाई से बचने के लिए, या अपरिवर्तनीय वापस जाने के लिए नकल? क्या एक म्यूटेबल ऑब्जेक्ट लौटने से बचने के लिए कोई अच्छा कारण है जहां किसी की अपेक्षा नहीं की जाती है?
(मुझे पता है कि यह एक NSMutableArray वापस जाने के लिए कानूनी है, क्योंकि यह NSArray का एक उपवर्ग है मेरा प्रश्न है या नहीं, यह एक अच्छा विचार है।।)
बेशक, आपके द्वारा दिया गया उदाहरण केवल पहली जगह में प्रतिलिपि बनाये बिना मूल को वापस कर सकता है। साथ ही, यह देखते हुए कि यह एक क्लास विधि है (और एक फ़ंक्शन नहीं, वैसे भी), क्या आपको वास्तव में हर बार सरणी का एक नया उदाहरण बनाने की आवश्यकता है? यदि आप प्रतिलिपि को कैश करते हैं, तो बिंदु काफी मज़ेदार होगा। – jlehr
+1 क्योंकि मैंने कुछ सचमुच महत्वपूर्ण सीखा है कि सभी उद्देश्य-सी प्रोग्रामर को जवाब खोजते समय पता होना चाहिए। – JeremyP