2012-09-27 4 views
6

डब्ल्यूडब्ल्यूडीसी 2012 में ऐप्पल ने एनएसएनंबर साहित्य और संग्रह साहित्य के लिए नया वाक्यविन्यास पेश किया, जिसमें "आधुनिक उद्देश्य-सी" नामक टॉक 405 में। मैंने स्टीफन जी कोचन द्वारा ऑब्जेक्टिव-सी 2.0 पर पुस्तक से उद्देश्य-सी सीखा है।क्या "आधुनिक उद्देश्य-सी" वास्तव में एक नया संस्करण है, यानी उद्देश्य-सी 2.1?

क्या "आधुनिक उद्देश्य-सी" उद्देश्य-सी 2.1 होने जा रहा है, या क्या ऐप्पल के नए वाक्यविन्यास को मौजूदा संरचनाओं के लिए वैकल्पिक, ऐप्पल-विशिष्ट वाक्यविन्यास (शॉर्टंड) माना जाना चाहिए जो संकलक द्वारा संसाधित किया जाता है?

(मैंने कुछ शोध ऑनलाइन किया, लेकिन उद्देश्य-सी रनटाइम के संदर्भ में केवल "आधुनिक" और "विरासत" शब्द पाए। मैं समझना चाहता हूं कि भाषा में वास्तव में क्या है, प्रीप्रोसेसर निर्देश क्या हैं, और संकलक निर्देशों क्या कर रहे हैं।)

उत्तर

10

ऑब्जेक्टिव-सी सी प्रीप्रोसेसर निर्देश और संकलक निर्देशों के विस्तार के रूप में परिभाषित किया गया हैं जैसा कि वे सी

लिए कर रहे हैं

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

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

इसलिए: हाँ, "आधुनिक उद्देश्य-सी" पहले उद्देश्य-सी से काफी अलग है कि आपको इसे एक नया संस्करण माना जाना चाहिए, हालांकि नहीं, इसमें कोई संस्करण संख्या संलग्न नहीं है और यह पूरी तरह से संभव है कि ऐप्पल नया जोड़ देगा भाषा में विशेषताएं और अभी भी इसे "आधुनिक उद्देश्य-सी" कहते हैं। भाषा के हिस्से में वास्तव में कौन सी विशेषताएं हैं, इसके अलावा न केवल कंपाइलर पर निर्भर करता है बल्कि उस लक्ष्य प्रणाली पर भी निर्भर करता है जिसे आप संकलित कर रहे हैं। इसलिए आईओएस 4 को लक्षित करने वाला एक "आधुनिक उद्देश्य-सी" कार्यक्रम ओएसएक्स 10.8 को लक्षित करने वाले "आधुनिक उद्देश्य-सी" कार्यक्रम की तुलना में सुविधाओं के एक अलग सेट का उपयोग करने में सक्षम होगा।

+0

धन्यवाद, कुछ ऐतिहासिक परिप्रेक्ष्य के लिए अच्छा है। मैंने के एंड आर सी और एएनएसआई सी युग में विकास शुरू किया, और उद्देश्य-सी के लिए एक समान मानक की उम्मीद की। जाहिर है इस मामले में ऐसा नहीं है। –

+3

ध्यान दें कि रनटाइम समर्थन की आवश्यकता वाले नए विशेषताओं को आम तौर पर केवल ओएस एक्स या आईओएस की प्रमुख रिलीज के साथ पेश किया जाता है; इसे पहले रिलीज में पहला और दूसरा पकड़ लेगा। कंपाइलर केवल विशेषताएं थोड़ा अधिक तरल पदार्थ हो सकता है। अब जब विकास एलएलवीएम पर केंद्रित है, तो आप आमतौर पर एलएलवीएम ओपन सोर्स प्रोजेक्ट पर नजर रख सकते हैं ताकि आगे आने वाले लोगों के लिए एक महसूस हो सके। – bbum

+0

यह दुर्भाग्यपूर्ण है कि ऐप्पल ने उद्देश्य-सी में इन परिवर्तनों के लिए संस्करण संख्याएं अपनाई नहीं हैं। अगले संस्करण को क्या कहा जा रहा है? मो 'आधुनिक उद्देश्य-सी? – ThomasW

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

  • कोई संबंधित समस्या नहीं^_^