2012-10-11 2 views
7

हाय दोस्तों तो मेरे पास एक अजीब सवाल है। मैं एक फ़ाइल से रनटाइम पर एक उद्देश्य सी कक्षाएं बनाना चाहता हूं। तो उदाहरण के लिए मेरे पास एक उद्देश्य सी अनुप्रयोग है, मैं इसे एक टेक्स्ट फ़ाइल (या एक .h .m जोड़ी, जो कुछ भी काम करता है) पर इंगित करना चाहता है और उसके बाद एप्लिकेशन टेक्स्ट फ़ाइल को पार्स कर सकता है और रनटाइम पर क्लास बना सकता है (कक्षा संख्या वस्तु)। निस्संदेह मैं पार्सर और उन सभी चीजों को लिखूंगा जो मैं जानना चाहता हूं कि यह संभव है या नहीं। मैं इन दो लेख पढ़ें:क्या मैं टेक्स्ट फ़ाइल से रन टाइम पर ऑब्जेक्टिव-सी क्लास बना सकता हूं?

http://www.mikeash.com/pyblog/friday-qa-2010-11-6-creating-classes-at-runtime-in-objective-c.html

http://www.mikeash.com/pyblog/friday-qa-2010-11-19-creating-classes-at-runtime-for-fun-and-profit.html

कौन सा दिखाता है कि कैसे रनटाइम पर एक उद्देश्य सी क्लास बनाने के लिए है, लेकिन इसकी सी कार्य करता है जो संकलन समय पर परिभाषित किया गया का उपयोग किया जा रहा है। यदि मैं सही काम करने वाले कार्यों को परिभाषित करने के लिए तारों का उपयोग करके एक ही चीज़ करने का एक तरीका ढूंढ सकता हूं, क्योंकि तब मुझे संकलन समय पर उन्हें परिभाषित करने की आवश्यकता नहीं है।

+0

टुट का उपयोग कर स्वयं की प्रक्रिया में लोड किया जाता होगा। आप क्लैंग और लिंकर को फिर से कार्यान्वित करना चाहते हैं? क्या आप जानते हैं कि यह कितना काम है? – trojanfoe

+0

आपको एक गतिशील पुस्तकालय/बंडल उत्पन्न करने के लिए अपने स्रोत को संकलित करने के लिए क्लैंग का आह्वान करने में सक्षम होना चाहिए जिसे आप NSBundle – nielsbot

+0

का उपयोग करके लोड कर सकते हैं, उद्देश्य-सी फ़ाइलों के लिए ऐसा करने के लिए बहुत कुछ नहीं है - इसके लिए आपको केवल क्लैंग (या क्लैंग स्रोत) ... यदि आप एक कस्टम भाषा बनाने में रुचि रखते हैं, तो यह अधिक समझ में आता है ... – nielsbot

उत्तर

1

निश्चित रूप से। पूरी तरह से संभव है।

मैं Objective-C support in this से शुरू करने का सुझाव दूंगा क्योंकि इसमें पूर्ण-उद्देश्य उद्देश्य-सी पार्सर और कोड जनरेटर शामिल है।

2

यही वह प्रतिबिंबित प्रोग्रामिंग कहलाता है। मुझे लगता है कि ओब्जे-सी के लिए कोई कोड मूल्यांकन समर्थन नहीं है क्योंकि यह एक स्क्रिप्टिंग भाषा नहीं है, इसलिए ओबीजे-सी के लिए प्रतिबिंब अवधारणा चुपचाप सीमित है। इसके अलावा, रन-टाइम पर संकलक पहले से ही कोड को ओब्जे-सी क्लैंग कोड में अनुवादित करता है और यह बाइटकोड को रिवर्स-ट्रांसफर करने के लिए बहुत समय लेने वाली नौकरी है और इसे फिर से दोबारा दोबारा दोहराता है

ओब्जे-सी प्रतिबिंब के लिए आप इसका उल्लेख कर सकते हैं इन उत्तरों

1

मेरी जिथब परियोजना कोको-इंटरप्र्रेटर देखें जो आप चाहते हैं उसका हिस्सा है।

यह एक टेक्स्ट फ़ाइल लेता है और इसे रनटाइम पर संकलित करता है .. और उसके बाद परिणामस्वरूप निष्पादन योग्य NSTask का उपयोग करता है। यह इसे बदलने के लिए काफी आसान हो तो द्विआधारी NSBundle

https://github.com/Daij-Djan/cocoa-interpreter

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