2009-05-14 13 views
26

मैं उद्देश्य-सी के लिए नया हूं और कुछ कक्षाओं का उपयोग करने के लिए सर्वोत्तम अभ्यास जानना चाहता हूं जो मैं अपनी कक्षा में उपयोग करता हूं।उद्देश्य-सी: .h या .m में हेडर आयात करना?

क्या मुझे अपनी कक्षाओं में #import "classB.h" संग्रहीत करना चाहिए। एच फ़ाइल या .m फ़ाइल में?

क्या अंतर है?

धन्यवाद!

+0

संभावित डुप्लिकेट [क्या आप #import में .h या .m फ़ाइलों को डालते हैं?] (Http://stackoverflow.com/questions/2770243/do-you-put-import-s-in- एच-या-एम-फाइलें) –

उत्तर

34

यह मीटर

एक आगे वर्ग घोषणा में शीर्षक में एक आगे वर्ग घोषणा (@class classB;) और #import "classB.h डाल करने के लिए उचित अभ्यास है, पता @class classB; तरह संकलक की सुविधा देता है यह वर्ग पर बाद में की उम्मीद करनी चाहिए, और इस समय इस बारे में शिकायत नहीं करनी चाहिए।

+0

मुझे लगता है कि आपकी पहली वाक्य में "एमएम में" मतलब है। –

+0

इसे इंगित करने के लिए धन्यवाद। –

4

कंपाइलर के लिए, यह वास्तव में कोई फर्क नहीं पड़ता। आप अपने .h में आगे की घोषणाओं को फेंक सकते हैं और फिर अपनी .m फ़ाइल तक #import पर प्रतीक्षा कर सकते हैं। इस पर अधिक जानकारी के लिए this एसओ पर पोस्ट देखें।

क्लीन-कोड संभावित से, कुछ लोग तर्क दे सकते हैं कि आपके कार्यान्वयन फ़ाइल में आयात डालने से उन्हें विवरण की आवश्यकता होती है जहां वे आवश्यक हैं (ऊपर भी लिंक देखें; लोग इस विचार को संदर्भित करते हैं)।

12

परिपत्र संदर्भों से बचने के लिए, केवल उस वर्ग से विरासत में प्राप्त होने पर किसी अन्य श्रेणी की शीर्षलेख फ़ाइल में हेडर फ़ाइल आयात करें। अन्यथा, @class ClassName का उपयोग कक्षा प्रकार घोषित करने के लिए करें यदि आपको अपनी हेडर फ़ाइल में इसकी आवश्यकता है, और # कार्यान्वयन फ़ाइल में इसे आयात करें।

+7

यह उल्लेखनीय है कि आप #import निर्देश के साथ परिपत्र संदर्भ प्राप्त नहीं कर सकते हैं। –

+0

@JasonCoco तो मुझे मार्क द्वारा समझाए गए हेडर फ़ाइल में #import के बारे में चिंता करने की आवश्यकता नहीं है? – Johannes

2

यह अनुशंसा की जाती है कि आप अपनी शीर्षलेख फ़ाइल में अन्य शीर्षलेख फ़ाइलें आयात करें। इस तरह आप कक्षा का उपयोग शीर्षलेख और कार्यान्वयन फ़ाइलों दोनों में कर सकते हैं (क्योंकि कार्यान्वयन फ़ाइल (.m) इसकी संबंधित शीर्षलेख फ़ाइल आयात करती है)।

यदि आप जानना चाहते हैं कि फ़ाइलों को कब आयात करना है और आगे की कक्षा घोषणा का उपयोग कब करना है, तो आप here पर जा सकते हैं। ;-)

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