2010-05-02 12 views

उत्तर

11

"आयात" इसमें हेडर फ़ाइल को लिंक करता है। शीर्षलेख में सबकुछ, संपत्ति परिभाषाओं सहित, विधि घोषणाएं और शीर्षलेख में कोई भी आयात उपलब्ध कराया गया है। आयात लिंकर को वास्तविक परिभाषा प्रदान करता है।

@class इसके विपरीत केवल लिंकर को शिकायत नहीं करता है कि शिकायत न करें कि इसकी कक्षा में कोई परिभाषा नहीं है। यह एक "अनुबंध" है कि आप कक्षा के लिए एक और बिंदु पर परिभाषा प्रदान करेंगे।

अधिकांशतः आप सर्कुलर आयात को रोकने के लिए @class का उपयोग करते हैं। क्लास क्लास बी को संदर्भित करता है, इसलिए यह क्लासबीएच को अपने क्लास एएच में आयात करता है लेकिन क्लासबी क्लास को भी संदर्भित करता है, इसलिए यह क्लासबीएच में क्लासएएच आयात करता है। चूंकि आयात कथन एक शीर्षलेख के आयात को आयात करता है, इसलिए यह लिंकर को अनंत लूप में प्रवेश करने का कारण बनता है।

कार्यान्वयन फ़ाइल (ClassA.m) में आयात को स्थानांतरित करना इससे रोकता है लेकिन फिर क्लास क्लास को क्लासबी में नहीं पहचाना जाएगा जब क्लासएएच में होता है। @class ClassB; निर्देश लिंकर को बताता है कि कोड में वास्तव में उपयोग किए जाने से पहले आप क्लासबी के लिए हेडर प्रदान करेंगे।

+0

बहुत अच्छी व्याख्या। धन्यवाद! – sashaeve

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