ऑब्जेक्टिव-सी की विरासत संस्करण में, एक objc_class struct इस तरह कार्यान्वित किया जाता है:ऑब्जेक्टिव-सी 2.0 ऑब्जेक्ट में संग्रहीत इंस्टेंस चर और विधियां कैसे हैं?
struct objc_class {
Class isa;
Class super_class;
const char *name;
long version;
long info;
long instance_size;
struct objc_ivar_list *ivars;
struct objc_method_list **methodLists;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
};
तो, struct है कि एक वस्तु का प्रतिनिधित्व करता है वस्तु के वर्ग के लिए एक सूचक, वस्तु के सुपर वर्ग के लिए एक सूचक को संग्रहीत करता है , ऑब्जेक्ट का क्लास नाम, ऑब्जेक्ट का संस्करण, जानकारी और इंस्टेंस आकार, ऑब्जेक्ट की आवृत्ति चर सूची, ऑब्जेक्ट की विधियों की सूची, ऑब्जेक्ट का कैश और ऑब्जेक्ट की प्रोटोकॉल सूची। किसी ऑब्जेक्ट का प्रतिनिधित्व करने वाली संरचना में इन फ़ील्ड की उपस्थिति काफी समझ में आता है क्योंकि उनमें से प्रत्येक वस्तु के बारे में जानकारी संग्रहीत करता है।
हालांकि, एक ही struct objc_class की ऑब्जेक्टिव-सी 2.0 कार्यान्वयन इस तरह है:
struct objc_class {
Class isa;
};
तो, objc_class के इस संस्करण में, वहाँ struct में केवल एक ही क्षेत्र है: ऑब्जेक्ट के लिए सूचक वर्ग संरचना।
मेरा प्रश्न, तो, उद्देश्य-सी 2.0 में संग्रहीत ऑब्जेक्ट के बारे में अन्य जानकारी कैसी है क्योंकि ऑब्जेक्ट्स का प्रतिनिधित्व करने वाली संरचना में केवल एक फ़ील्ड है?
दिलचस्प पढ़ना: [\ [objc व्याख्या \]: गैर-नाजुक ivars] (http://www.sealiesoftware.com/blog/archive/2009/01/27/objc_explain_Non-fragile_ivars.html) –