मैंने हाल ही में एक पुराने Xcode प्रोजेक्ट को संकलित करने की कोशिश की थी (जो कि बस ठीक संकलन करता था), और अब मैं इस बारे में बहुत सारी त्रुटियाँ देख रहा हूँ:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
कोड पैटर्न जो इन त्रुटियों का कारण बनता है, हमेशा ऐसा दिखता है:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
मैं देख सकता हूं कि त्रुटि क्यों उत्पन्न हो रही है। मैं कंपाइलर को अपनी संपत्ति एक्सेसर्स (दोनों गेटटर और सेटर) को संश्लेषित करने के लिए कहता हूं, और फिर तुरंत बाद मैं सेटर को मैन्युअल रूप से ओवरराइड करता हूं। उस कोड से हमेशा थोड़ी गंध आती है।
तो, ऐसा करने का उचित तरीका क्या है? अगर मैं @dynamic
इसके बजाय का उपयोग करता हूं @synthesize
, तो मुझे गेट्टर भी लिखना होगा। क्या यही एकमात्र तरीका है?
atomic
गुणों के साथ होता है ? परमाणु गुणों के मामले में लॉकिंग रणनीति के संबंध में गेट्टर / सेटर जोड़ी को सिंक में रखना एक अच्छा विचार हो सकता है। यह मुश्किल है अगर एक हिस्सा संश्लेषित है जबकि दूसरा कस्टम कोड है।