मैं कर रहा हूँ नया करने के लिए Obj सी तो मुझे माफ कर दो अगर यह एक बेवकूफ सवाल है:उद्देश्य-सी में जावा-एनम शैली कक्षाएं?
मैं कैसे Javas enums की शैली में कुछ लागू करते हैं? या अधिक सटीक होने के लिए:
मुझे कुछ ज्ञात गुणों वाला एक वर्ग चाहिए जो संकलन समय और अद्वितीय प्रति उदाहरण पर ठीक हो। इसके अतिरिक्त मैं केवल एक उदाहरण प्रकार चाहता हूं।
मुझे जावा में एक उदाहरण देता हूँ:
public enum MessageTypes {
DEFAULT("white", "standard", 1),
EXPRESS("red", "expressMessage", 2),
BORADCAST("green", "broadcast", 3);
String color; String tagName; int dbId;
MessageTypes(String color, String tagName, int dbId) {
// you get the idea
}
//some methonds like getEnumByTagName
}
कैसे आप ऑब्जेक्टिव-सी में कुछ इस तरह करना होगा? क्या मैं कुछ भूल रहा हूँ? क्या यह एक बुरा पैटर्न है?
अग्रिम धन्यवाद!
संपादित करें: मुझे खेद है, अगर मैंने खुद को स्पष्ट नहीं किया है। मुझे पता है, कि obj-c enums वे नहीं हैं जो मैं ढूंढ रहा हूं (क्योंकि वे केवल int में टाइप किए गए टाइप से अधिक हैं)।
मैं एक विशिष्ट वर्ग के प्रकार (सिंगल-ऑफ़-सिंगलटन, अपरिवर्तनीय) उदाहरणों का एक सेट बनाना चाहता हूं। एप्पल देव-डॉक्स में सिंगलटन पैटर्न का कोई उपयोग नहीं है क्योंकि मैं प्रत्येक वर्ग के कई अलग-अलग उदाहरणों को अपनी गुणों में व्यक्तिगत मानों के साथ चाहता हूं।
इसका लक्ष्य एकाधिक संदेश प्रकार (लगभग 20) होना है जिसे किसी संदेश के रूप में एक संदेश के रूप में असाइन किया जा सकता है। मेरे प्रत्येक संदेश प्रकार में एक (फिक्स और पूर्वनिर्धारित) रंग, विशेषता-मान (एक्सएमएल-प्रतिनिधित्व में) और एक संख्यात्मक आईडी है।
जावा में, मैं अपने कोड नमूने के रूप में एक enum का उपयोग करेंगे। लेकिन मैं विभिन्न संदेश प्रकार कैसे बना सकता हूं और उन्हें ओब्जे-सी में अपनी संपत्तियों के साथ जोड़ सकता हूं?
संदेश प्रकार के 20 सब्सक्राइसेस बनाना (गुणों को धारण करने वाले सिंगलटन-उदाहरण वाले प्रत्येक) ऐसे सरल कार्य और कुल ओवरकिल के लिए बहुत सारे काम की तरह दिखते हैं।
मेरा वर्तमान दृष्टिकोण एनएसएआरएआरई के साथ अलग-अलग उदाहरण रखने वाले वर्ग को बनाना है। +(id)messageTypeForId:NSInteger id_
जैसी विधि की पहली पहुंच पर एनएसएआरएआरई प्रीपोप्टेड है। लेकिन यह पूरी तरह से बेकार लगता है और बिल्कुल सुरुचिपूर्ण नहीं ...
क्या कोई और संतोषजनक दृष्टिकोण है?
मैक्रो मेरे दृष्टिकोण में अधिक बदसूरत है लेकिन मुझे वास्तव में आपका पहला समाधान पसंद है। यह मेरे दृष्टिकोण की तुलना में बेहतर (और अधिक कोको-जैसा) प्रतीत होता है। धन्यवाद। –
मैं देख रहा हूँ कैसे 'default' और' shared' कुछ कक्षाओं में सम्मेलन द्वारा उपयोग किया जाता है, तो उन जैसे अन्य अन्य उपसर्गों कर रहे हैं? – zekel
आपके पहले समाधान में आप यह जांच क्यों करते हैं कि यह मैसेज टाइप करने से पहले यह मैसेज टाइप शून्य है? इससे पहले की रेखा के कारण यह हमेशा शून्य नहीं होगा? एक नौसिखिया मदद करने के लिए Thx। –