2009-07-21 18 views
6

में टुपल्स का संग्रह प्रबंधित करना मैं उद्देश्य-सी के लिए बिल्कुल नया हूं और सोच रहा था कि टुपल्स के संग्रह को प्रबंधित करने का सबसे अच्छा तरीका क्या था। सी में मैं एक 2 डी सरणी या एक संरचना का उपयोग करेंगे।उद्देश्य-सी

क्या मुझे इन tuples को रखने के लिए वस्तुओं का निर्माण करना चाहिए? यह केवल सूचियों को सॉर्ट करने के लिए ओवरकिल की तरह लगता है या क्या वस्तु प्रारंभिकरण द्वारा उत्पन्न कोई वास्तविक अतिरिक्त भार नहीं है?

उत्तर

12

वस्तुओं की पीढ़ी में निश्चित रूप से कुछ ओवरहेड है। वस्तुओं की एक छोटी संख्या के लिए, फिर ओबीजेसी डेटा संरचनाओं का उपयोग करना अभी भी उचित है। यदि आपके पास बड़ी संख्या में टुपल्स हैं, तो मैं उन्हें structs की सी सरणी में प्रबंधित करूँगा। याद रखें, उद्देश्य-सी वास्तव में केवल सी है। उद्देश्य सी में सी संरचनाओं का उपयोग करना उचित और सामान्य है (एक बिंदु पर; सीखना जहां वह बिंदु एक अच्छा उद्देश्य-सी डेवलपर बनने में एक प्रमुख मील का पत्थर दर्शाता है)।

आमतौर पर इस तरह की डेटा संरचना के लिए, मैं शायद एक एकल उद्देश्य-सी ऑब्जेक्ट बनाउंगा जो पूरे संग्रह को प्रबंधित करता है। तो बाहरी कॉलर्स एक उद्देश्य-सी इंटरफेस देखेंगे, लेकिन आंतरिक डेटा एक अधिक कुशल सी संरचना में संग्रहीत किया जाएगा।

यदि बहुत सारे टुपल्स को जल्दी से एक्सेस करना आम है, तो मेरा संग्रह ऑब्जेक्ट शायद [NSArray getObjects:range:] जैसा "प्राप्त" विधियां प्रदान करेगा। "प्राप्त" से शुरू होने वाली ओबीजेसी विधियों से संकेत मिलता है कि पहला पैरामीटर एक सूचक है जो विधि द्वारा ओवरराइट किया जाएगा। यह आमतौर पर ओबीजेसी ऑब्जेक्ट द्वारा प्रबंधित चीजों के लिए उच्च-प्रदर्शन सी-जैसी पहुंच के लिए उपयोग किया जाता है।

डेटा संरचना इस तरह की ठीक वैसी ObjC डेवलपर्स प्रदर्शन और सी

1

मुझे लगता है कि आपको एनएसएआरएआरई वस्तुओं के एनएसएआरएआरई, या शायद एनएस डिक्शनरी वस्तुओं के एनएसएआरएआरई के लिए बसना होगा। आप हमेशा अपने ही वर्ग रोल कर सकते हैं, या जिस तरह से आप सी

1

में करना होगा कर रहे एक जोड़े को अलग अलग तरीकों से आप इस बारे में जा सकते हैं कर रहे हैं:

  1. CoreData। हालांकि यह तकनीकी रूप से डेटाबेस नहीं है, यह एक जैसा व्यवहार कर सकता है। यदि आपको ऐप रनों के बीच दृढ़ता की आवश्यकता नहीं है, तो NSIQLMemoryStoreType स्टोर प्रकार का उपयोग करने पर विचार करें, जैसा कि NSSQLiteStoreType या अन्य विकल्प के विपरीत है। हालांकि, यदि आप एक साथ टुपल्स में शामिल होना चाहते हैं, तो कोरडाटा का उपयोग पूरी तरह से पर काम नहीं करेगा (यह, आईएमओ, मुख्य कारण है कि CoreData डेटाबेस नहीं है)।
  2. एक वास्तविक डेटाबेस का उपयोग करें। प्रत्येक मैक और आईफोन पर SQLite जहाजों का उपयोग करना बहुत आसान है यदि आप FMDB या SQLite Persistent Objects या PLDatabase या EGODatabase या GTMSQLite wrapper by Google जैसे रैपर का उपयोग करते हैं।
  3. एक टुपल वास्तव में केवल कुंजी-मूल्य जोड़े का संग्रह है, इसलिए आप बस एनएसएमयूटेबल डिक्शनरी के एनएसएमयूटेबलएरे का उपयोग कर सकते हैं। आप स्पष्ट रूप से एसक्यूएल सिंटैक्स का उपयोग नहीं करेंगे, और आपके द्वारा चलाए जाने वाले किसी भी जुड़ने/प्रश्नों को, लेकिन यह निश्चित रूप से सबसे आसान सेटअप होगा।
  4. एक ट्यूपल क्लास लिखें और एनएसएमयूटेबलएरे में स्टोर करें (# 3 के समान, बस अपने टुपल्स पर विशेषताओं के एक सामान्य सेट को लागू करना)।
+5

की सादगी के साथ सुंदरता और ObjC के रख-रखाव की विलय क्यों आप एक डेटाबेस का प्रयोग करेंगे tuples है के लिए है? – George

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

  • कोई संबंधित समस्या नहीं^_^