यदि मैं कस्टम UIView सबक्लास को परिभाषित करना चाहता हूं जो इसकी सीमाओं को सेट करते समय कुछ करता है, तो मैं सेटटर को ओवरराइड कैसे करूं? सेटबाउंड ओवरराइडिंग खतरनाक प्रतीत होता है, अगर मैं सही ढंग से समझता हूं, तो गेटर और सेटर नाम सार्वजनिक इंटरफ़ेस का हिस्सा नहीं हैं और कभी भी बदल सकते हैं।मैं एक संपत्ति सेटर को कैसे ओवरराइड कर सकता हूं?
बेशक, मैं कक्षा में परिभाषित गुणों की सूची के लिए रनटाइम से पूछताछ करने के लिए class_copyPropertyList का उपयोग करता हूं, फिर इसे सेटटर के नाम के लिए पूछताछ करता हूं, और अंत में विधि जोड़ने के लिए class_addMethod का उपयोग करता हूं, पहले विधि के संदर्भ में पहले मूल संस्करण को कॉल करने के लिए उपयोग करने के लिए।
यह सब हैकी लगता है। क्या मैं चाहता हूं कि ऐसा करने का एक साफ तरीका है, जो भविष्य के ओएस संस्करणों को तोड़ने की गारंटी नहीं है? धन्यवाद।
सीमाओं की संपत्ति UIView शीर्षलेख में परिभाषित की गई है, इसलिए आपकी टिप्पणी "गेटर और सेटर नाम सार्वजनिक इंटरफ़ेस का हिस्सा नहीं हैं और किसी भी समय बदल सकते हैं" सत्य नहीं है: '@property (nonatomic) CGRect सीमाएं' इसका मतलब है गेटर/सेटर 'सीमाएं '/' सेटबाउंड है: ' –
हेडर में इंस्टेंस वैरिएबल घोषित भी हैं, लेकिन इसका मतलब यह नहीं है कि वे सार्वजनिक इंटरफ़ेस का हिस्सा हैं :) क्या यह कहना सही होगा कि http: // developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html सार्वजनिक इंटरफ़ेस है? इसमें सेटबाउंड का कोई उल्लेख नहीं है। –