2012-05-07 16 views
7

के संबंध में आयात बनाम आगे की घोषणा मैं आईबी के माध्यम से एक ऑब्जेक्ट पर कुछ एनीमेशन करने की कोशिश कर रहा हूं। सेटअप इसलिए की तरह एक संपत्तिआईओएस - setAlpha

@class MySpecialClass; 

और उसके बाद: मैं बहुत तरह मेरे ज करने के लिए एक आगे घोषणा जोड़ रहा

@property (nonatomic, retain) IBOutlet MySpecialClass *specialClass; 

मैं specialClasssetAlpha का उपयोग कर को छिपाने के लिए सक्षम होना चाहते हैं, लेकिन मैं संकलन करने का प्रयास करते समय xcode से निम्न त्रुटि प्राप्त करें।

Receiver type 'MySpecialClass' for instance message is a forward declaration. 

क्या मुझे आगे की घोषणा के बजाय अपनी कक्षा आयात करने की आवश्यकता है? अगर मुझे ऐसा करने की ज़रूरत नहीं है तो मैं कुछ भी अनावश्यक आयात नहीं करना चाहता हूं।

उत्तर

44

आगे की घोषणा सिर्फ संकलक को बताती है, "अरे, मुझे पता है कि मैं घोषणा कर रहा हूं सामान जो आप पहचान नहीं पाते हैं, लेकिन जब मैं @ MyClass कहता हूं, तो मैं वादा करता हूं कि मैं इसे कार्यान्वयन में आयात करूंगा "।

आप आगे घोषणा का उपयोग सामान को रोकने के लिए परिपत्र की तरह भी शामिल है (MyClass आयात YourClass जो MyClass जो ... आयात करता है), लेकिन 'वादा' यदि आप अपने कोड के साथ कर वह आपको बाद में #import करेंगे

+4

मैंने पढ़ा है सबसे अच्छा और सबसे संक्षिप्त स्पष्टीकरण में से एक - अच्छी तरह से किया। यदि संभव हो तो मैं आपको और अधिक वोट दूंगा। – BonanzaDriver

+1

मुझे अंत में आगे की घोषणा समझा गया है, धन्यवाद :) – dreampowder

5

आपको इसे आयात करने की आवश्यकता है। आगे की घोषणा सिर्फ इस वर्ग के संकलक को चुप करने के लिए है, लेकिन इसके सदस्यों, विधियों, गुणों, आकार के बारे में कोई जानकारी नहीं है ...

+9

है हालांकि, .m फ़ाइल में आयात किया जा सकता है। सामान्य पैटर्न .h में आगे की घोषणा है, एमएम में आयात। – jrturton

+0

हाँ, यह सही है। – graver