2012-08-26 11 views
11

यह प्रश्न उद्देश्य-सी में कुछ वर्ग गुणों के संबंध में "मैं कैसे हूं" बल्कि "यह क्यों है" नहीं है।"अभिव्यक्ति असाइन करने योग्य नहीं है" (UIView.frame.origin) क्यों?

मैं ("अभिव्यक्ति आबंटित नहीं") समझते हैं कि नीचे दो उदाहरण की अनुमति नहीं है और एक त्रुटि में परिणाम:

self.myUIView.frame.origin.x = 50; 
self.myUIView.frame.origin = CGPointMake(50,50); 

और कहा कि ऐसा करने के लिए उचित तरीके से एक नया CGRect बनाने के लिए है, वांछित मान सेट करें और फिर इसे असाइन करें:

CGRect rect = self.myUIView.frame; 
rect.origin = CGPointMake(50, 50); 
self.myUIView.frame = rect; 

मुझे यह समझना है कि यह क्यों है।

सीजीआरईटी एक संरचना है जिसमें दो structs शामिल हैं। क्या उस कार्य को रोकने के लिए प्रतिबंधों को आवंटित करने के लिए प्रतिबंधों को आवंटित किया जाता है, जो उस स्मृति को ओवरफ़्लो कर सकता है? या यह सार्वजनिक और निजी संपत्तियों से संबंधित एक सम्मेलन से अधिक है?

मुझे एहसास है कि यह मामूली/मूल प्रश्न की तरह लगता है लेकिन मुझे लगता है कि इन मौलिक प्रकार की चीजों की गड़बड़ी/बुरी समझ को दूर करना महत्वपूर्ण है।

उत्तर

9

ऐसा इसलिए है क्योंकि यदि आप सीधे फ्रेम की उत्पत्ति या आकार को बदलने में सक्षम थे, तो आप UIView की फ्रेम प्रॉपर्टी के सेटटर विधि को बाईपास करेंगे। यह कई कारणों से बुरा होगा।

UIView को इसके फ्रेम में बदलावों के बारे में सूचित करने का कोई मौका नहीं होगा। लेकिन इसे इन परिवर्तनों के बारे में जानना है ताकि वे इसके सबव्यूव्स को अपडेट कर सकें या खुद को फिर से तैयार कर सकें।

साथ ही, काम करने के लिए KVO के लिए, आपको सही सेटर्स का उपयोग करना होगा (या तो सेटफ्रेम का उपयोग करके: या डॉट नोटेशन)।

5

struct के तत्वों को निर्दिष्ट करने में समस्या यह है कि struct के स्वामित्व वाले वर्ग को यह पता नहीं होगा कि struct बदल दिया गया है। जब आप बात करते हैं, तो यह अच्छा नहीं है, कहें, फ्रेम की उत्पत्ति: UIView उत्पत्ति को बदलने के जवाब में आगे बढ़ने की उम्मीद है, लेकिन चूंकि कक्षा को परिवर्तन की अधिसूचना नहीं दी जाएगी, इसलिए कोई हिल नहीं होगा।

दूसरी ओर frame सेट करना, पता लगाया जा सकता है, क्योंकि UIView की setFrame विधि लागू की जाएगी। यह वह कोड है जिसमें UIView आकार बदलने, पुनर्स्थापना आदि का ख्याल रख सकता है।

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

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