2011-05-31 11 views
5

जब एक NSUserDefaultsController के लिए एक NSArrayController के contentArray बंधन, तुम बंधन पर चेकबॉक्स "यौगिक मूल्य के रूप में सामग्री हैंडल" जाँच करने के लिए है। यह पारंपरिक ज्ञान बन गया है, लेकिन वास्तव में विकल्प क्या करता है?कोको बाध्यकारी के NSHandlesContentAsCompoundValueBindingOption वास्तव में क्या करता है?

मैंने एक छोटा परीक्षण ऐप लिखा और यह देख सकता था कि विकल्प चालू होने के साथ, पूरे contentArray बाध्यकारी स्रोत के setValue:forKey: पर भेजा जाता है जब भी आप सरणी में किसी तत्व की संपत्ति संपादित करते हैं। जब विकल्प बंद होता है, केवल तत्व ऑब्जेक्ट स्वयं संशोधित होता है और बाध्यकारी स्रोत अधिसूचित नहीं किया जाता है।

यह बताता है कि NSUserDefaultsController काम करने के लिए विकल्प की आवश्यकता क्यों है (अन्यथा यह ध्यान नहीं देगा कि आपने सरणी में कुछ संपादित किया था और कभी भी परिवर्तन को सहेज नहीं लिया था)। लेकिन यह स्पष्ट नहीं करता कि वास्तव में कौन अलग कर रहा है। क्या सरणी नियंत्रक इस विकल्प का प्रभार ले रहा है और जब यह परिवर्तन देखता है तो सामग्री सरणी वापस लिख रहा है? यदि हां, तो यह विकल्प के उल्लिखित उद्देश्य से कैसे संबंधित है जो "एक परिवर्तनीय मूल्य ट्रांसफॉर्मर का अनुवाद करने के लिए [...] यौगिक मूल्य अस्थायी रूप से छोटे टुकड़ों में उपयोग करता है"?

उत्तर

1

संदेश प्रवाह यहाँ बहुत अच्छी तरह से समझाया गया है: http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/MessageFlow.html#//apple_ref/doc/uid/TP40002149-186285

यहाँ जवाब देने के लिए मेरे प्रयास है:

  1. मूल सामग्री वस्तु valueForKeyPath: का उपयोग कर contentObject, contentArray या contentSet बंधन NSUserDefaultsController से लिया गया है द्वारा निर्दिष्ट
  2. सामग्री वस्तु मूल्य ट्रांसफार्मर के transformedValue: पद्धति का उपयोग करके तब्दील हो जाता है यही कारण है कि
  3. उपयोगकर्ता से नया मान तब्दील सामग्री वस्तु
  4. सामग्री वस्तु उलटा का उपयोग कर inverseTransformedValue:
  5. नई, उलटा तब्दील सामग्री वस्तु नई सामग्री वस्तु के रूप में स्थापित करने और NSUserDefaultsController setValue:forKeyPath:
  6. उपयोग करने के लिए पारित कर दिया है तब्दील हो जाता है में डाला जाता है
संबंधित मुद्दे