2011-10-31 6 views
8

क्या व्युत्पन्न संपत्ति के लिए एक क्षणिक विशेषता मॉडल करने के लिए कोई कारण है यदि यह केवल पढ़ा जाता है? ऐसा लगता है कि बस मेरी अनुकूलित कक्षा में एक संपत्ति घोषित करना और फिर फ्लाई पर गेटर में मूल्य की गणना करना बहुत आसान लगता है। परिवर्तनों के बारे में पर्यवेक्षकों को सूचित करने के लिए मैं keyPathsForValuesAffecting के साथ इसे जोड़ दूंगा। यदि मुझे कैशिंग की आवश्यकता है तो मैं केवल संपत्ति के लिए एक ivar जोड़ूंगा और जब भी अंतर्निहित मानों में से कोई एक बदलता है (जैसा कि this प्रश्न के उत्तर में सुझाया गया है) इसे रीसेट करें।कोर डेटा में व्युत्पन्न पढ़ने वाली संपत्ति का प्रतिनिधित्व करने के लिए मैं एक क्षणिक विशेषता का उपयोग क्यों करूं?

क्या इसे क्षणिक विशेषता के रूप में मॉडलिंग में कोई लाभ होगा?

उत्तर

7

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

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

तो, क्षणिक गुणों और उनके इच्छित उपयोग के बारे में अधिक पढ़ने के बाद, मुझे एहसास हुआ कि यह शायद खराब उनका उपयोग करने का तरीका है। मुझे अपने कार्यान्वयन के लिए कैश करने से कोई फायदा नहीं हुआ है। मुझे ऑब्जेक्ट को संदेश भेजने के बजाय 'डॉट' नोटेशन (क्योंकि यह एक संपत्ति है) का उपयोग करने की क्षमता पसंद है, लेकिन मुझे विश्वास नहीं है कि इसका उपयोग करके कोई प्रदर्शन लाभ है।

अधिक महत्वपूर्ण बात यह है कि, मुझे यह विश्वास करने का उपर है कि आपके प्रबंधित ऑब्जेक्ट संदर्भ को ट्रैक करना चाहिए, वास्तव में यह एक बुरी चीज बनाता है।

तो, मैं अपने ऐप को दोबारा प्रबंधित कर दूंगा ताकि अब मैं अपने प्रबंधित ऑब्जेक्ट इकाई के लिए उप-वर्ग पर इन सरल उदाहरण विधियों को कर सकूं और केवल परिणाम लौटा सकूं क्योंकि मुझे क्षणिक गुण बनाने के लिए कोई वास्तविक लाभ नहीं दिख रहा है।

का कारण का उपयोग करने के लिए, जब आपको वास्तव में ऐसा कुछ जारी रखने की आवश्यकता होती है जो प्रबंधित ऑब्जेक्ट प्रकारों में से किसी एक में फिट न हो। लेकिन, फिर आप मूल रूप से दो गुण बनाते हैं। एक जो क्षणिक है और आपके ऑब्जेक्ट का सही प्रतिनिधित्व है, जिसके लिए आप गेटर्स और सेटर्स लिखते हैं, और दूसरा ऐसा संभवतः एक बाइनरी डेटा प्रकार है जो अन्य ऑब्जेक्ट वैल्यू को बनाए रखने के लिए कोर डेटा इकाई उप-वर्ग द्वारा आंतरिक रूप से आंतरिक रूप से उपयोग किया जाता है (एस) एक भंडारण वस्तु में।

कम से कम यह मेरी समझ है कि यह सब कैसे काम करता है। अगर मुझे यह गलत लगता है तो टिप्पणियों का बहुत स्वागत है क्योंकि यह मेरे लिए भी बहुत भ्रमित है।

+0

धन्यवाद। मैं "क्षणिक संपत्ति" और "व्युत्पन्न संपत्ति" के बारे में एक स्पष्टीकरण के लिए चारों ओर खोज रहा था। आपने इसे समझने में मेरी मदद की। मैं ज्यादातर समय उपयोग केस से सहमत हूं: "इनमें से किसी एक का उपयोग करने का कारण यह है कि जब आपको वास्तव में ऐसा कुछ जारी रखने की आवश्यकता होती है जो प्रबंधित ऑब्जेक्ट प्रकारों में से किसी एक में फिट न हो।" –

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

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