सवाल
Apple के डॉक्स निर्दिष्ट करते हैं कि:
विलसेट और डिडसेट पर्यवेक्षकों को तब नहीं बुलाया जाता है जब किसी संपत्ति को पहली बार शुरू किया जाता है। उन्हें केवल तब कहा जाता है जब संपत्ति का मूल्य एक प्रारंभिक संदर्भ के बाहर सेट किया जाता है।
क्या आरंभीकरण के दौरान इन्हें बुलाना संभव है?
क्यों?
मान लीजिए कि मेरे पास यह वर्ग है
class SomeClass {
var someProperty: AnyObject {
didSet {
doStuff()
}
}
init(someProperty: AnyObject) {
self.someProperty = someProperty
doStuff()
}
func doStuff() {
// do stuff now that someProperty is set
}
}
मैंने विधि बनाई doStuff
, प्रसंस्करण कॉल को अधिक संक्षिप्त बनाने के लिए, लेकिन मैं केवल didSet
फ़ंक्शन के भीतर संपत्ति को संसाधित करूंगा । क्या इनिशियलाइज़ेशन के दौरान इसे कॉल करने के लिए बाध्य करने का कोई तरीका है?
अपडेट करें
मैंने अपनी कक्षा के लिए सिर्फ सुविधा इंटिविलाइज़र को निकालने का फैसला किया और आपको इनिशियलाइज़ेशन के बाद संपत्ति सेट करने के लिए मजबूर किया। इससे मुझे पता चल didSet
जाएगा कि मुझे हमेशा बुलाया जाएगा। मैंने तय नहीं किया है कि यह समग्र रूप से बेहतर है, लेकिन यह मेरी स्थिति के अनुकूल है।
defer
:convenience init(someProperty: AnyObject) { self.init() defer { self.someProperty = someProperty }