2010-02-08 18 views
7

मैं एक मूल ऑब्जेक्ट उन्मुख एएनएसआई सी रनटाइम को लागू करने और उद्देश्य-सी का उपयोग गाइड के रूप में करने की कोशिश कर रहा हूं।उद्देश्य-सी रनटाइम रूट मेटाक्लास और अन्य कक्षा विवरणों को तुरंत कैसे चालू करता है?

वे तीन भागों के रूप में प्रतीत होते हैं। एक कक्षा विवरण, कक्षा इंटरफ़ेस, और कक्षा कार्यान्वयन। क्लास इंटरफ़ेस को तत्काल करने के लिए, क्लास ऑब्जेक्ट का उपयोग करने की परिचित विधि किसी के ऑब्जेक्ट को तुरंत चालू करने के लिए हो सकती है यदि रनटाइम पहले से ही क्लास विवरण का उपयोग करके आपकी क्लास ऑब्जेक्ट को तुरंत चालू कर चुका है।

तो क्या क्लास ऑब्जेक्ट का उपयोग करके तुरंत चालू करने की क्षमता प्रदान करने के लिए सभी कक्षा परिभाषाएं स्थिर रूप से आवंटित की गई हैं? या अगर वे गतिशील रूप से आवंटित किए जाते हैं (प्रारंभिक कॉल पर), कैसे? क्या यह रन लूप का हिस्सा है या कक्षा वास्तव में एक ऐसा कार्य है जो यह निर्धारित करता है कि संदेश को अग्रेषित करने से पहले इसे आवंटित किया गया है या नहीं?

उत्तर

5

रनटाइम कन्स्ट्रक्टर फ़ंक्शंस के माध्यम से कुछ प्रारंभिक कार्य करता है जिसे वास्तविक प्रोग्राम निष्पादन से पहले बुलाया जाता है। वे 0 जीदोनों जीसीसी और क्लैंग में जाते हैं।

उद्देश्य-सी के मामले में उनमें से कुछ संकलक द्वारा बाइनरी में एम्बेडेड हैं। आपको उन्हें अपने शीर्षकों में समान प्रभाव के लिए शामिल करना होगा।

ये फ़ंक्शंस संकलक द्वारा स्वचालित रूप से एम्बेडेड डेटा का उपयोग करते हैं। वे कक्षा लुकअप फ़ंक्शन के लिए हैश टेबल बनाने जैसी चीजें करते हैं जिनका उपयोग वास्तविक संदेश पास करने के लिए किया जाता है।

दूसरी ओर उदाहरण गतिशील रूप से आवंटित किए जाते हैं।

मैं कुछ ऐसा कर रहा हूं, इसलिए मुझे वास्तव में उससे बेहतर कुछ नहीं पता है, लेकिन यह गहरा है जितना मैंने खोला है।

+0

तो, Obj सी lexer, संकलक अंदर, सामान्य वर्ग विवरण अपने इंटरफेस (ज फ़ाइल) से, उत्पन्न वर्ग देखने के लिए एक हैश तालिका में सूची संग्रहीत करता है, लेकिन क्या आरंभीकरण उल्लेख कंस्ट्रक्टर्स का उपयोग कर चलाता है? कुछ मुख्य में कहा जा के लिए सेट अप की जरूरत नहीं है? – Anderson

+0

संकलक इंजेक्शन संकलन समय पर रनटाइम के रचनाकारों को कॉल करता है? – Anderson

+1

नहीं, बाइनरी नामक बार्सियों का एक अनुभाग है जिसमें फ़ंक्शन पॉइंटर्स की एक सूची शामिल है। यह सूची कंपाइलर-लिंकर द्वारा उन कार्यों की सूची से लिखी गई है जिनमें एक रचनात्मक विशेषता है और स्टार्टअप कोड पर या तो स्थिर लाइब्रेरी या गतिशील लिंक फ़ाइलों में प्रारंभिक कोड द्वारा निष्पादित किया गया है। – jbcreix

संबंधित मुद्दे