मेरे पास एक डिज़ाइन संबंधित प्रश्न है।स्ट्रिंग स्थिरांक बनाम enum स्थिरांक का उपयोग क्यों करें?
मैंने देखा है UIApplication वर्ग झंडे के इस प्रकार है:
UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification;
UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification;
और दूसरी तरफ, वर्ग UITableView तरह structs वाणी,:
typedef enum {
UITableViewScrollPositionNone,
UITableViewScrollPositionTop,
UITableViewScrollPositionMiddle,
UITableViewScrollPositionBottom
} UITableViewScrollPosition;
एक सूचनाओं के लिए है एक अन्य वस्तुओं के प्रकार परिभाषित करता है। मेरा मानना है कि वे दोनों कुछ संबंधित वस्तुओं को 'टैग' करने के लिए डिज़ाइन विकल्प हैं और उस ध्वज के आधार पर रनटाइम पर निर्णय लेते हैं।
मान लें कि मैं उन वस्तुओं का एक कारखाना बनाना चाहता हूं जिन्हें टैग करने की आवश्यकता है। छवि में, मुझे प्रत्येक अनुभाग और विजेट के लिए गणना या आईडी चाहिए। कोई विजेट कैसे संचार करेगा या किसी अन्य को 'आह्वान' करेगा? ई.जे. [[कंटेनर साझा किया गया] वर्तमान Widget: ?? के लिए पता: ?? withInfo: (आईडी) की जानकारी];
वहाँ एक गहरी या अधिक सटीक कारण उनमें से एक का चयन करने के है? आपकी मदद के लिए धन्यवाद।
ध्यान दें कि पहले एक तार के 'संग्रह', जहां दूसरी पूर्णांकों की एक चयन किया जाएगा हो जाएगा (शुरू करने 0 @) – KevinDTimm
साथ क्या केविन ने कहा कि के साथ, मैं नहीं मानता कि आप तार का एक enum बना सकते हैं। टैग समूह के लिए Enums महान हैं। मेरी कंपनी में हम आम तौर पर सड़क के नीचे एक enum मूल्य को हटाने का फैसला करते हैं, तो हम आम तौर पर enum मूल्य निर्धारित करते हैं।राज्य को बनाए रखने वाले कुछ कोड राज्य को इंगित करने के लिए enum मान का उपयोग कर सकते हैं, हालांकि यदि आप ऐप का एक नया संस्करण लोड करते हैं और एक मान हटा दिया जाता है तो यह enum में सभी मानों को तब तक प्रभावित करेगा जब तक उन्हें स्पष्ट रूप से निर्दिष्ट नहीं किया जाता है। – Sam
एक बात जो मेरे दिमाग में आती है वह यह है कि, स्ट्रिंग के साथ, आपको ऑब्जेक्ट के इंटरफ़ेस को नहीं जानना होगा जो इन स्ट्रिंग को प्राप्त करेगा। Enums के साथ, शामिल हर वस्तु रिसीवर इंटरफेस पता होगा ... क्या मैं सही हूँ? – chuckSaldana