setValue:forKey:
NSKeyValueCoding प्रोटोकॉल का एक हिस्सा है , जो अन्य बातों के अलावा, आपको इंटरफ़ेस बिल्डर की पसंद से ऑब्जेक्ट प्रॉपर्टी तक पहुंचने देता है। setValue:forKey:
के अलावा अन्य वर्गों में लागू किया गया है NSDictionary
।
setObject:forKey:
NSMutableDictionary's
अस्तित्व का कारण है। इसका हस्ताक्षर काफी हद तक सेटवैल्यू के समान होता है: forKey :,, लेकिन अधिक जेनेरिक (जैसे कोई भी कुंजी प्रकार) है। यह कुछ हद तक एक संयोग है कि हस्ताक्षर इतने ही हैं।
इस भ्रम में क्या शामिल है कि NSMutableDictionary के कार्यान्वयन के ज्यादातर मामलों में setValue:forKey:
बराबर है setObject:forKey:
। अन्य वर्गों में, setValue:forKey:
सदस्य चर बदलता है। में NSMutableDictionary
, यह प्रविष्टियों शब्दकोश बदलता है जब तक आप एक '@' चरित्र के साथ कुंजी उपसर्ग - जिस स्थिति में यह सदस्य चर संशोधित करता है।
इसलिए, संक्षेप में, setObject:forKey:
जब आपको शब्दकोश कुंजियों और मूल्यों के साथ काम करने की आवश्यकता होती है, और setValue:forKey:
दुर्लभ मामलों में जहां आपको केवीपी से निपटने की आवश्यकता होती है ।
संपादित करें: और ओह, ऐसा लगता है कि यह पहले पूछा गया है और उत्तर दिया गया है: ObjectForKey और valueForKey के बीच अंतर?