यह प्रश्न शुद्ध जिज्ञासा से बाहर है। कोको कैसे आईडी प्रकार को परिभाषित करता है? क्या यह शून्य के लिए सिर्फ एक टाइपिफ़ है? साथ ही, यदि आप जानते हैं कि कौन सी शीर्षलेख फ़ाइल में परिभाषित किया गया है, तो मुझे एक नज़र डालने में दिलचस्पी होगी।कोको में, आईडी प्रकार कैसे परिभाषित किया गया है?
उत्तर
कमांड कुंजी दबाए रखें और इसकी परिभाषा पर कूदने के लिए किसी भी हाइलाइट किए गए शब्द पर डबल क्लिक करें।
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
typedef struct objc_selector *SEL;
typedef id (*IMP)(id, SEL, ...);
objc.h
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
में अपने दम पर जानने के लिए, XCode में, राइट क्लिक करें आईडी - या किसी भी अन्य प्रकार - और परिभाषा करने के लिए कूद का चयन करें। अन्य सी/सी ++ आधारित ऑब्जेक्ट सिस्टम की समानताओं को ध्यान में रखना दिलचस्प है; ऑब्जेक्ट पॉइंटर - एक आईडी - एक स्ट्रक्चर को इंगित करता है जो साझा कक्षा की जानकारी के बिंदु से शुरू होता है। मैं कई सी ++ कार्यान्वयन, जो वर्चुअल फ़ंक्शन टेबल होगा, क्योंकि यह माइक्रोसॉफ्ट के COM के साथ होगा। कोको में, objc_class के विवरण हेडर फ़ाइल में हमें प्रकट नहीं किए जाते हैं।
id
प्रकार आम तौर पर घोषित की तरह है:
typedef struct objc_object *id;
यह ऑब्जेक्टिव-सी के लिए महत्वपूर्ण ++ है जहां प्रकार एक घायल समारोह नाम का हिस्सा है।
आप /usr/include/objc/objc.h में एक नज़र
यह (तेंदुआ पर) /usr/include/objc/objc.h
में delcared है ले जा सकते हैं इस प्रकार है:
typedef struct objc_object {
Class isa;
} *id;
कौन सा इसका मतलब है void *
नहीं है पर सभी, बल्कि एक संरचना के लिए एक सूचक जिसमें एक एकल सदस्य होता है, जो कक्षा परिभाषा को इंगित करता है। वास्तव में दिलचस्प है।
मुझे याद है जब मैं सी में जा रहा था और सीख रहा था कि उद्देश्य-सी शुरू में सी के शीर्ष पर केवल एक प्रीप्रोसेसर परत के रूप में लागू किया गया था। यह अब ऐसा नहीं है।
विषय पर सबसे अच्छा पढ़ने मैंने पाया:
आप दस्तावेज़ यहां उल्लेख कर सकते हैं: http://opensource.apple.com/source/objc4/objc4-437/runtime/objc.h आशा इस के लिए आप
- 1. एनएसएट्रिब्यूटेड स्ट्रिंग में एक पैराग्राफ कैसे परिभाषित किया गया है?
- 2. Enum.values () परिभाषित किया गया है?
- 3. विभिन्न कंपाइलरों में __cplusplus निर्देश कैसे परिभाषित किया गया है?
- 4. glGenBuffers परिभाषित नहीं किया गया है?
- 5. फ़ंक्शन परिभाषित किया गया है लेकिन सी
- 6. क्या मैं = 0, ++ परिभाषित किया गया है?
- 7. आकार (बूल) परिभाषित किया गया है?
- 8. Magento UploaderJsObject परिभाषित नहीं किया गया है
- 9. DEBUG मैक्रो परिभाषित किया गया है?
- 10. ईजेएस आंशिक परिभाषित नहीं किया गया है '
- 11. डेल्फी डीसीयू में किस प्रकार परिभाषित किया गया है यह बताने के लिए कैसे?
- 12. sqlconnection को परिभाषित नहीं किया गया है
- 13. प्लॉट परिभाषित नहीं किया गया है
- 14. getActivity() जहां इसे परिभाषित किया गया है?
- 15. ऐस संपादक "परिभाषित परिभाषित नहीं किया गया है"
- 16. आर में ऑब्जेक्ट (चर) परिभाषित किया गया है या नहीं?
- 17. समानांतर कोड के लिए स्केलेबिलिटी कैसे परिभाषित किया गया है?
- 18. कैसे जांचें कि django टेम्पलेट चर परिभाषित किया गया है?
- 19. टॉमकैट temp निर्देशिका स्थान कैसे परिभाषित किया गया है?
- 20. $ अपवाद को "स्थानीय" में परिभाषित किया गया है
- 21. jQuery स्रोत कोड में jQuery.ajax कहां परिभाषित किया गया है?
- 22. टीएफएस 2012 में फ़िल्टर कहां परिभाषित किया गया है?
- 23. उल्का में "टेम्पलेट परिभाषित नहीं किया गया" क्या कारण है?
- 24. रुबी 1.9.2 में example_eval परिभाषित किया गया है?
- 25. सी # सामान्य प्रकार बॉक्स किया गया है?
- 26. "आईडी" शाब्दिक परिभाषित कहां है?
- 27. अजीब त्रुटि - CS0012: प्रकार x को एक असेंबली में परिभाषित किया गया है जिसका संदर्भ
- 28. क्यों भौतिक पता संरचना का उच्च भाग हस्ताक्षरित प्रकार के रूप में परिभाषित किया गया है?
- 29. सी # प्रकार एक असेंबली में परिभाषित किया गया है जिसका संदर्भ
- 30. कोको: विक्रेता आईडी
+1 cmd + डबल क्लिक करें पर एक एहसान करना होगा आश्चर्यजनक रूप से उपयोगी है! –
+1 ग्रेट उत्तर। मैं अगले वर्ष में एक्सकोड के साथ और अधिक काम करने की उम्मीद करता हूं, और कीबोर्ड शॉर्टकट जानना बहुत उपयोगी होगा। –
+1 अपने स्वयं के जवाब पर भी। मुझे पहले से ही यह पता था, लेकिन यह बहुत उपयोगी है। – Mike