2011-10-12 7 views
5

मैंने ऑब्जेक्टिव-सी कक्षाओं के लिए @interface घोषणाओं को देखा है। मैं समझने के लिए निम्न तरीकों से क्यों डेवलपर्स घोषित @interface चाहते हैं:@ इंटरफेस घोषणाओं की किस्में, कुछ कोष्ठक के साथ

// in the .h file 
@interface MyClass : NSObject 
// ... 
@end 

// in the .m file (what's the purpose of the parens?) 
@interface MyClass() 
// more property declarations which seem like they can go in the .h file 
@end 

// again in the .m file (what's the purpose of private?) 
@interface MyClass (Private) 
// some method declarations 
@end 
+1

उदाहरण के लिए: [एक त्वरित खोज] (http://stackoverflow.com/search?q=%5Bobjc%5D+%40interface+parentheses&submit=search) जाता http : //stackoverflow.com/questions/7378479/what-does-the-text-inside-parentheses-in-interface-and-implementation- डायरेक्टिव –

+1

[भाषा spec] (http://developer.apple] को देखने के बारे में क्या .com/पुस्तकालय/मैक/प्रलेखन/कोको/वैचारिक/ObjectiveC/अध्याय/ocDefiningClasses.html # // apple_ref/doc/यूआईडी/TP30001163-CH12-SW1)? –

उत्तर

5

यह सिर्फ एक सामान्य class interface NSObject, जहाँ आप ivars, गुण और विधियों

// in the .h file 
@interface MyClass : NSObject 
// ... 
@end 

निम्नलिखित दो हैं categories, जिसे आप एक वर्ग के लिए तरीकों को जोड़ने की अनुमति की घोषणा से इनहेरिट है। हालांकि यह उप-वर्ग नहीं है (उसी नाम के साथ एक विधि घोषित न करें, क्योंकि आप मूल तक पहुंच नहीं पाएंगे)। यदि आपके पास इंटरफ़ेस की नामित श्रेणी है (जैसे @interface MyClass (Private)), तो कार्यान्वयन को @implementation MyClass (Private) में प्रदान किया जाना चाहिए, अज्ञात श्रेणियों (एक्सटेंशन भी कहा जाता है) के मामले में, कार्यान्वयन सामान्य रूप से प्रदान किया जा सकता है। ध्यान दें कि एक्सटेंशन आपको श्रेणी में इविर्स जोड़ने की अनुमति देता है जबकि (नामित) श्रेणियां नहीं होती हैं।

// in the .m file (what's the purpose of the parens?) 
@interface MyClass() 
// more property declarations which seem like they can go in the .h file 
@end 

// again in the .m file (what's the purpose of private?) 
@interface MyClass (Private) 
// some method declarations 
@end 
+1

एक्सटेंशन में कक्षा में स्टोरेज जोड़ने के लिए यह संभव है _currently_। एक श्रेणी के माध्यम से ऐसा करना संभव नहीं है। –

-1

क्या कभी .m फ़ाइल में चला जाता है निजी है। माता-पिता श्रेणियों के लिए हैं ताकि आप अपने कोड को श्रेणियों में विभाजित कर सकें ताकि इसे और अधिक पठनीय बनाया जा सके। क्योंकि कोड .m और निजी में है, उन्होंने श्रेणी को निजी कहा।