2012-04-06 9 views
7

में एक और कक्षा में घोषित मैं एक DataClass.hका उपयोग enum डेटाप्रकार उद्देश्य सी

@interface DataClass : NSObject 
{ 
} 

enum knownTypes 
{ 
    type1 = 0, 
    type2, 
    type3, 
    UnknownType = -1 
}; 

वहाँ एक रास्ता मैं .m फ़ाइल और अन्य वर्ग से पहुँच में knownTypes निर्दिष्ट कर सकते हैं है है।

यह उस वर्ग का उपयोग है जिसे मैं बना रहा हूं, इसलिए इस वर्ग में मूल्यों तक पहुंचने के लिए कोई ऑब्जेक्ट नहीं बनाना चाहता।

पूर्व के लिए: TestClass.m में, DataClass.h आयात करके, अब मैं enum मानों का प्रकार टाइप 1, टाइप 2 के रूप में उपयोग कर सकता हूं .. लेकिन यदि मैं DataClass.m में enum डेटा घोषित करता हूं, तो मैं उन enum मानों का उपयोग नहीं कर सका ।

+0

नीचे अज्ञात टाइप क्यों डालें? –

उत्तर

15

इसमें कक्षाओं के साथ कुछ लेना देना नहीं है। यह सी

की एक विशेषता है यदि आप .h फ़ाइल में किसी प्रकार या enum को परिभाषित करते हैं, तो आप इसे आयात करके इसका उपयोग कर सकते हैं (#import) जहां आपको इसकी आवश्यकता है।

यदि आप .c या .m फ़ाइल में अपना enum परिभाषित करते हैं, तो फ़ाइल में उस परिभाषा के बाद केवल तत्व इसका उपयोग कर सकते हैं।

आपके मामले में, ऐसा लगता है कि आपको दो अलग-अलग फ़ाइलों में एक ही enum की आवश्यकता है। उपयोग उस फ़ाइल को एक अलग फ़ाइल में परिभाषित करना है, उदाहरण के लिए, knownTypes.h और उस फ़ाइल को दो फ़ाइलों में आयात करें: DataClass.m और TestClass.m

तो TestClass, परीक्षण के लिए है तो अपने वर्तमान संगठन ठीक है: दोनों DataClass.m और TestClass.m आयात DataClass.h enum DataClass.h में घोषित किया गया है।

1

नहीं, यदि आप शीर्षलेख की बजाय स्रोत फ़ाइल में enum परिभाषित करते हैं, तो केवल वह स्रोत फ़ाइल enum में उपयोग किए गए पहचानकर्ताओं का उपयोग करने में सक्षम होगी। यदि आप इसे “ निजी ” रखना चाहते हैं लेकिन एक से अधिक स्रोत फ़ाइल द्वारा प्रयोग योग्य है, तो इसे एक अलग शीर्षलेख में रखें और दोनों अलग-अलग स्रोतों में यह अलग शीर्षलेख शामिल करें।

+0

जो कुछ मैं करने की कोशिश कर रहा हूं, वहां डेटा क्लास यह है कि अलग हैडर फ़ाइल – Friendtam

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