2010-11-29 14 views
12

उद्देश्य-सी के नामस्थान क्यों नहीं हैं? यह एक साधारण सुविधा की तरह लगता है जो कुछ वर्ग नामों को और अधिक पठनीय (AVMutableVideoCompositionLayerInstruction किसी को भी बना देगा?) और क्लास नामों पर मूर्ख पत्र उपसर्ग को कुल्हाड़ी देगा। क्या यह मुख्य रूप से पीछे की संगतता की वजह से है? क्या ऐसा लगता है कि नामस्थानों को लागू करना मुश्किल है?उद्देश्य-सी के नामस्थान क्यों नहीं हैं?

+0

इसके लायक होने के लिए, मैं NXTrEP :: NSArray पर ऐरे पसंद नहीं करूंगा। मूर्खतापूर्ण है क्योंकि आपको उपसर्ग की बात मिल सकती है, मुझे लगता है कि नामों में कोई प्रतीक वर्ण नहीं है, उद्देश्य-सी वाक्यविन्यास की वाक्य-जैसी संरचना में अच्छी तरह से फिट बैठता है। –

+0

@wm: लेकिन आपने इसे "नेक्स्टस्टेप सरणी" के रूप में पढ़ा है, जैसा कि आप 'ऑब्जेक्ट एट इंडेक्स' नहीं पढ़ते हैं, वैसे ही 'ऑब्जेक्ट एट इंडेक्स: i' "इंडेक्स पर ऑब्जेक्ट I" के रूप में "इंडेक्स कॉलन i पर ऑब्जेक्ट नहीं" । बिंदु जहां तक ​​एनएस-वर्गों का संबंध है, वैसे भी मुद्दा है। आप सभी मौजूदा कोको सॉफ्टवेयर को तोड़ने के बिना उन्हें एक नए नामस्थान में स्थानांतरित नहीं कर सकते हैं। – JeremyP

+2

इसके अलावा, आप इसे प्रत्येक बार 'नेक्स्टस्टेप :: ऐरे' के रूप में संदर्भित नहीं करेंगे, आपके पास 'नेक्स्टस्टेप का उपयोग करके' होगा और फिर इसे 'ऐरे' के रूप में संदर्भित करें, * जब तक * अस्पष्टता न हो और फिर आप ' डी इसे पूरी तरह से हल करें। यह वास्तव में कोड क्लीनर और अधिक पठनीय बना देगा। – devios1

उत्तर

11

मुझे जवाब नहीं पता लेकिन मुझे संदेह है कि "यह दिखने से कठिन है" शायद यह है। आपको कंपाइलर और लिंकर में ऐसे तरीके से समर्थन देना होगा जो मौजूदा सॉफ़्टवेयर को तोड़ नहीं देता है। और यह स्पष्ट रूप से संभव है (सी ++ पहले से ही यह कर चुका है) संभवतः उपकरण श्रृंखला टीम की प्लेट पर उच्च प्राथमिकताएं थीं। जैसे हाल ही में हमारे पास कचरा संग्रह, जीसीडी, ब्लॉक और उद्देश्य-सी 2.0 दिखाई दिया है, इसलिए हम यह नहीं कह सकते कि वे कुछ भी नहीं कर रहे हैं।

नेमस्पेस समर्थन एक बात है जिसे मैं उद्देश्य-सी के साथ पेश करने के लिए बहुत प्यार करता हूं।

+0

मैंने इसके बारे में भी सोचा, मुझे लगता है कि सबसे बड़ी बाधा सभी सी सामान हो सकती है ... –

4

मुझे नहीं पता कि क्या आप जानना चाहते हैं कि कुछ आधिकारिक निर्णय है या नहीं। लेकिन कई अन्य फीचर की तरह नामस्थान पसंद है, भाषा योगदानकर्ता द्वारा पसंद किया गया विकल्प। PHP ने हाल ही में नामस्थान पेश किया है, और उदाहरण के लिए जावा उपयोग पैकेज जो नामस्थान या पायथन उपयोग मॉड्यूल की तरह कार्य करता है।

मुझे लगता है कि नामस्थान कार्यान्वयन में एक ओवरहेड है, मुख्य रूप से क्योंकि उद्देश्य-सी को द्विपक्षीय रूप से टाइप किया गया है, इसलिए रनटाइम पर आपको नामस्थान को हल करने के लिए कुछ जांच करना है, डिफ़ॉल्ट व्यवहार को हल करने के लिए, आदि .. और मुझे लगता है कि क्योंकि उद्देश्य-सी का भी एम्बेडेड वातावरण (एकेए आईफोन) में उपयोग किया जाता है, गति बहुत महत्वपूर्ण है।

आप सब कुछ मैं एक बड़ी IMHO में कहा है रैप करने के लिए है;

अद्यतन डी:

मैं कारण समझा बजना डेवलपर वेबसाइट पर इस बहुत ही दिलचस्प चर्चा http://clang-developers.42468.n3.nabble.com/Adding-namespaces-to-Objective-C-td1870848.html#a1872744 पाया क्यों निश्चित रूप से है Obj-C में नामस्थान लागू करने के लिए गैर-तुच्छ।

+5

कक्षा के नामों के लिए नेमस्पेस समर्थन प्रदान करने के लिए, मुझे लगता है कि यह पर्याप्त होगा। इन्हें किसी तरह से उलझाया जाएगा ताकि, रन टाइम पर, बहुत कम या कोई ऊपरी भाग नहीं होगा। – JeremyP

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