2012-06-07 8 views
6

मैं समझ रहा हूं कि मैं जिस वर्ग को बना रहा हूं, उसके लिए तेज़ गणना प्रोटोकॉल (आईओएस/उद्देश्य सी के तहत) को कैसे अपनाना है। मैंने ऐप्पल के दस्तावेज़ों के अनुभाग को पढ़ा, लेकिन ... मुझे काफी कुछ नहीं मिला!मेरी कक्षा के लिए तेजी से गणना को अपनाने/कार्यान्वित करने का उदाहरण?

किसी के पास कुछ नमूना कोड है जो मैं देख सकता हूं?

मैं जो करने की कोशिश कर रहा हूं: मेरे पास ऑब्जेक्ट्स की एक श्रृंखला है जिस पर मैं प्रेषक को फिर से चालू करना चाहता हूं। प्रेषक एक अंतर्निहित निर्माण का उपयोग करना चाहता है। पकड़ यह नहीं है कि मैं नहीं चाहता कि प्रेषक सभी सरणी में ऑब्जेक्ट्स देखें क्योंकि उनमें से कुछ एप्लिकेशन के संदर्भ में मान्य नहीं हैं।

दूसरे शब्दों में, मैं चाहता हूं कि मेरा इटरेटर कुछ मानदंडों से मेल खाने वाले सरणी में ऑब्जेक्ट्स का सबसेट लौटाए।

मैं इस प्रक्रिया में नया सरणी बनाने की इच्छा नहीं करता ताकि चीजों को धीमा न किया जाए।

उत्तर

8

ऐप्पल का अपना FastEnumerationSample इसे बहुत अच्छी तरह प्रदर्शित करता है। इसकी आवाज़ से, आपने इसे अभी तक नहीं देखा होगा।

this blog post भी है। यहाँ

+0

बढ़िया! हाँ, मैंने यह नहीं देखा था। धन्यवाद! –

+0

वह ब्लॉग पोस्ट तकनीकी रूप से बहुत सटीक है, लेकिन बहुत खराब लिखा है। यह उन चीज़ों के आस-पास कूदता है जिन्हें आपको जानने की आवश्यकता नहीं है, और उन चीजों को दिखाता है जिन्हें आपको नहीं करना चाहिए, उन चीजों को बड़े पैमाने पर अस्पष्ट करना जिन्हें आपको जानने की आवश्यकता है। माइक ऐश की पोस्ट आमतौर पर बहुत अधिक गुणवत्ता होती है :(मैंने इसे कई बार पढ़ा है, और यह अभी भी समझ में नहीं आता है - मैं परेशान नहीं होने की सलाह देता हूं। ऐप्पल स्रोत पर हैक करने के लिए बेहतर है जब तक कि आप इसे समझने के अपने तरीके का अनुमान लगा सकें। – Adam

0

मुझे नहीं पता कि "प्रेषक एक अंतर्निहित निर्माण का उपयोग करना चाहता है" से आपका क्या मतलब है। जिसके परिणामस्वरूप आप पूछ रहे हैं, शायद इंडेक्सऑफ ऑब्जेक्ट्स पैसिंगटेस्ट का उपयोग कर बेहतर हासिल किया जाएगा: जो आपको आपके सरणी में सभी आइटम्स का एक इंडेक्स सेट देगा जो आपके द्वारा सेट किए गए परीक्षण को पास करता है।

आप filteredArrayUsingPredicate का भी उपयोग कर सकते हैं: एक नई सरणी प्राप्त करने के लिए जो आपके मूल का सबसेट है - मुझे पता है कि आपने कहा था कि आप कोई नया सरणी नहीं बनाना चाहते थे, लेकिन यदि आप अपनी सरणी का सबसेट वापस करना चाहते हैं, तो आपको एक नई सरणी बनाना होगा।

2

बहुत बेहतर स्पष्टीकरण:

http://www.cocoawithlove.com/2008/05/implementing-countbyenumeratingwithstat.html

एनबी: एप्पल के स्रोत कोड तकनीकी रूप से सही है, लेकिन खराब बताया गया है, और ज्यादातर बेकार है जब तक आप "लगता है कि क्या प्रोग्रामर सोच रहा था/उस दिन धूम्रपान" खेलने का आनंद लें ।

लीकवाइज, माइक एश की पोस्ट सही है, और उपयोगी आपको यह जानने के बाद, लेकिन शुरुआती बिंदु के रूप में भयानक है।

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