जहां तक मैं समझता हूं @property .h फ़ाइल में गेटर और सेटर की घोषणा करता है और @ सिंथेसाइज .m फ़ाइलों में गेटर और सेटर लागू करता है। इसके अलावा @synthesize का उपयोग करने के बजाय गेटटर और सेटर के लिए अपना स्वयं का कार्यान्वयन लिखना संभव है।उद्देश्य-सी: कार्यान्वयन के बिना @property घोषणा (@ सिंथेसाइज)
तो अगर हमें हमेशा सेटर/गेटटर को लागू करने की आवश्यकता है तो हमें इसे अतिरिक्त रूप से घोषित करने की आवश्यकता क्यों है? @property मेरे लिए semantical अनावश्यक और बग के लिए एक स्रोत प्रतीत होता है।
जब मैं @property घोषित करता हूं तो क्या खुश होता है लेकिन इसे @ सिंथेसाइज़ या मैन्युअल रूप से कार्यान्वित करना भूल जाता है? जब मैं @ सिंथेसाइज का उपयोग करता हूं और @property घोषणा भूल जाता हूं तो क्या खुशी होती है?
अच्छा है कि उन्होंने इसे जोड़ा। प्रतिक्रिया –
के लिए धन्यवाद अभी भी एक मामला है जहां आपको दोनों संपत्तियों का उपयोग करने और एक साथ संश्लेषित करने की आवश्यकता होगी। कंपाइलर ivar बनाने के लिए संपत्ति नाम और अंडरस्कोर उपसर्ग का उपयोग करेगा। यदि ivar _propertyname एक निजी आवृत्ति चर के साथ टकराता है, तो आपको इसे एक नए ivar में संश्लेषित करने की आवश्यकता होगी। उदाहरण के लिए: यदि आप UIToolbar को उप-वर्गीकृत कर रहे हैं, और इसे नाम देने वाली संपत्ति घोषित करते हैं तो आपको ivar _delegate का उपयोग करने में त्रुटि मिल जाएगी क्योंकि UIToolbar में एक निजी इंस्टेंस वेरिएबल आईडी _delegate है। आप इसे '@ सिंथेसाइज प्रतिनिधि = _mydelegate;' का उपयोग करके हल कर सकते हैं। – lolol