11

यदि आवृत्ति चर एक वर्ग के उदाहरण से संबंधित हैं, तो क्लास वेरिएबल्स मेटाक्लास के उदाहरण से संबंधित होंगे, मुझे सोचना चाहिए। लेकिन उद्देश्य-सी मेटाक्लास के साथ मेरा अनुभव मुझे बताता है कि यह असंभव है।class_getClassVariable() क्या करता है?

मुझे आश्चर्य है कि class_getClassVariableclass_getInstanceVariable के विपरीत है, और रनटाइम में class_setClassVariable क्यों नहीं है।

उत्तर

13

मैं इसके बारे में यहाँ एक चर्चा पाया: http://lists.apple.com/archives/objc-language/2008/Feb/msg00021.html

नहीं, यह संभव नहीं है। कोई कंपाइलर समर्थन नहीं है, और रनटाइम समर्थन नहीं है; class_getClassVariable(cls, name) केवल class_getInstanceVariable(cls->isa, name) पर कॉल करता है।

यदि यह संभव था, तो संभवतः यह आपको प्रत्येक उप-वर्ग पर एक नया चर नहीं देगा। उद्देश्य-सी के मेटाक्लास पूरी तरह से काम करने के लिए पर्याप्त नहीं हैं- कक्षा पर्याप्त है।

1

class_getClassVariable() फ़ंक्शन मतलब नहीं है, उद्देश्य सी

मेरा अनुमान में एक वर्ग चर के रूप में ऐसी कोई बात नहीं है क्योंकि वहाँ उस वर्ग चर क्रम द्वारा समर्थित हैं, लेकिन नहीं भाषा से है।