2012-07-13 17 views
5

मैं उद्देश्य-सी और नोटिस देख रहा हूं, उदाहरण के लिए, कक्षा-इंटरफ़ेस घोषणा @interface से शुरू होती है। ठीक है, कोई समस्या नहीं है। पाठ, इसलिए, सुझाव देता है कि @ और interface के बीच कोई स्थान की अनुमति नहीं है। हालांकि, जब मैं एक *.m फ़ाइल में जीसीसी संकलक के लिए निम्न सरल उदाहरण पारित:उद्देश्य-सी में घोषणा शुरू करने के बाद `@` के बाद रिक्त स्थान की अनुमति है?

@ interface A 
@ end 

संकलक शिकायत के बिना कोड स्वीकार करता है। क्या कोई मुझे संदर्भ की दिशा में इंगित कर सकता है जो स्पष्ट रूप से कहता है कि @ interface को उद्देश्य-सी विनिर्देशन द्वारा स्वीकार्य भी माना जाता है? मुझे ऐप्पल के 2008 और 2011 के दस्तावेज़ों में कुछ भी नहीं मिला था, जिसमें एक सवाल या दूसरा कहना था कि प्रश्न में पहले बताए गए सरल पाठ के अलावा।

अग्रिम धन्यवाद।

EDIT: यह ध्यान देने योग्य हो सकता है कि एमाक्स टेक्स्ट रंग का प्रदर्शन करता है या नहीं, पहचानकर्ता एक कीवर्ड है या नहीं; कीवर्ड नीले और गैर-कीवर्ड पीले रंग के होते हैं। @interface रंग नीले और @ interface रंग पीले रंग। विम में इसी तरह का व्यवहार होता है।

+1

सी-प्रकार की भाषाएं ढीली होती हैं जहां सफेद स्थान प्रतीकों के पास दिखाई दे सकते हैं। मैं अनुमान लगा रहा हूं कि वहां एक जगह वास्तव में कोई फर्क नहीं पड़ता, खासकर अगर, जैसा कि आप कहते हैं, यह संकलित करता है। – Almo

+0

हाँ, मुझे किसी भी दस्तावेज में संबोधित इस मुद्दे को कभी भी याद नहीं किया जा सकता है। अधिकांश भाग '@' का उपयोग उद्देश्य-सी प्रीप्रोसेसर को विशेष सामान, एक तरफ या दूसरे करने के लिए ट्रिगर करने के लिए किया जाता है, इसलिए यह प्रीप्रोसेसर होगा, सी संकलक नहीं, जो निर्णय लेता है। (अच्छा सवाल!) –

+0

उद्देश्य-सी प्रलेखन को छोड़कर दिलचस्प बिंदु, हॉट लिक्स मैंने निर्दिष्ट किया है कि 'इंटरफ़ेस' एक कंपाइलर निर्देश है, जो '# import' जैसे प्रीप्रोसेसर निर्देशों से अलग है। –

उत्तर

3

उद्देश्य-सी (The Objective-C Programming Language से परे) के लिए कोई औपचारिक विनिर्देश नहीं है। व्हाइटस्पेस सम्मेलनों की निश्चित रूप से कोई बीएनएफ-शैली परिभाषा नहीं है। यदि यह संकलित करता है, तो यह निकटतम है कि हमें "कानूनी" होना है। यह कई भाषाओं के लिए सच है। उदाहरण के लिए पर्ल को सर्वश्रेष्ठ रूप से परिभाषित किया गया है "उन तारों को perl निष्पादन योग्य अस्वीकार नहीं किया जाएगा।" (कम से कम मेरी राय में ....)

उस ने कहा, सही शैली @interface एक जगह के बिना है। Defining a Class देखें।

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