@class
परिपत्र निर्भरता को तोड़ने के लिए मौजूद है। मान लें कि आपके पास कक्षा ए और बी
@interface A:NSObject
- (B*)calculateMyBNess;
@end
@interface B:NSObject
- (A*)calculateMyANess;
@end
चिकन; अंडे से मिलें यह कभी संकलित नहीं हो सकता क्योंकि ए का इंटरफ़ेस बी पर परिभाषित किया गया है और इसके विपरीत।
इस प्रकार, यह @class
का उपयोग करके ठीक किया जा सकता:
@class B;
@interface A:NSObject
- (B*)calculateMyBNess;
@end
@interface B:NSObject
- (A*)calculateMyANess;
@end
@class
प्रभावी रूप से संकलक कि इस तरह के एक वर्ग कहीं, और इस प्रकार संकेत कहा वर्ग के उदाहरण को इंगित करने की घोषणा की पूरी तरह से वैध हैं मौजूद है बताता है। हालांकि, अगर आप एक उदाहरण संदर्भ जिसका प्रकार केवल एक @class
के रूप में परिभाषित किया गया है पर एक विधि कॉल नहीं कर सका क्योंकि संकलक के लिए कोई अतिरिक्त मेटाडाटा उपलब्ध है वहाँ (मुझे याद नहीं करता है, तो इसके माध्यम से एक फोन के रूप में मूल्यांकन किया जा रहा करने के लिए कॉल साइट reverts id
या नहीं)।
अपने उदाहरण में, @class
हानिरहित, लेकिन पूरी तरह अनावश्यक है।
मेरी इच्छा है कि मैं सिर्फ 'चिकन, अंडे से मिलें' – lukya
बीटीडब्लू के लिए एक और +1 दे सकता हूं, यह 'आईडी' मूल्यांकन पर वापस आ जाता है। – jheld
क्या कोई विशेष कारण हैं कि कुछ व्यक्ति अपनी .h फ़ाइल में '@ class' डालते हैं और फिर आवश्यक। हेड फ़ाइल को उनकी .m फ़ाइल में आयात करते हैं, और अन्य वर्तमान कक्षा शीर्षलेख फ़ाइल में .h फ़ाइल आयात कर सकते हैं? बस उत्सुक, धन्यवाद। @bbum –