यह class extension है। आप घोषणाओं के लिए इसका उपयोग कर सकते हैं कि आप .h
फ़ाइल में नहीं रहना चाहते हैं।
इसका उपयोग कई डेवलपर्स द्वारा किया गया था, यहां तक कि पहले भी, जिन्होंने मैन्युअल रूप से .m
फ़ाइल में एक्सटेंशन जोड़ा था। तो मुझे लगता है कि ऐप्पल ने इसे टेम्पलेट में शामिल किया क्योंकि इसका व्यापक रूप से उपयोग किया जाता है और इसे एक अच्छा अभ्यास माना जाता है।
वास्तव में, .h
फ़ाइल का उपयोग केवल अन्य फ़ाइलों से उपयोग की जाने वाली घोषणाओं के लिए किया जाना चाहिए। आपको कुछ गुण, विधियों या स्थिरांक घोषित करना पड़ सकता है जिनका उपयोग केवल .m
फ़ाइल के अंदर किया जाएगा। उन घोषणाओं के लिए, उन्हें कक्षा विस्तार में बनाना बेहतर है।
तो आपके सवालों के जवाब:
- इस अतिरिक्त @interface ... आवश्यक अगर मैं एक अलग ज फ़ाइल है?
नहीं, यह आवश्यक नहीं है लेकिन यह एक सर्वोत्तम अभ्यास है।
- यह पूर्व आईओएस 5 परियोजनाओं में क्यों नहीं दिखाई दिया?
यहां तक कि अगर यह एक आमतौर पर इस्तेमाल किया अभ्यास था, यह टेम्पलेट में शामिल नहीं किया गया था।
- मैं एक अलग ज फ़ाइल होने के बजाय इसका उपयोग कर सकते हैं?
सं वर्ग विस्तार .h
फ़ाइल जहां "सार्वजनिक" अपने वर्ग के इंटरफेस घोषित करने के लिए है प्रतिस्थापित नहीं करता।
- आगे बढ़ने के लिए सबसे अच्छा अभ्यास क्या है?
आप कक्षा विस्तार में सभी घोषणाओं कि .m
फ़ाइल के दृश्य के बाहर होने की जरूरत नहीं है रखना चाहिए।
। – janusbalatbat
संभावित डुप्लिकेट [.h और .m फ़ाइल में @interface परिभाषा के बीच अंतर] (http://stackoverflow.com/questions/3967187/difference-between-interface-definition-in-h-and-m-file) –