2015-08-06 4 views
6

मुझे शुद्ध स्विफ्ट में कुछ बनाने में परेशानी हो रही है। मैं NSValueTransformer के समान वर्गों की रजिस्ट्री को कार्यान्वित करने की कोशिश कर रहा हूं।क्या जीसीसी `__attribute __ ((कन्स्ट्रक्टर)) के बराबर एक स्विफ्ट है?

उद्देश्य-सी में, मैं यह सुनिश्चित करता हूं कि एनएसवीएलयू ट्रांसफॉर्मर उप-वर्ग setValueTransformer:forName: को load उप-वर्ग की कक्षा विधि में कॉल करके पंजीकृत किया गया था। यह दृष्टिकोण स्विफ्ट में काम नहीं करता है क्योंकि रनटाइम स्विफ्ट कक्षाओं पर load पर कॉल नहीं करता है।

मेरा अगला विचार __attribute__((constructor)) का स्विफ्ट संस्करण ढूंढना था, लेकिन मेरी खोज खाली हो गई। स्विफ्ट __attribute__((constructor)) जैसा कुछ प्रदान करता है या एक सी फ़ंक्शन लिखने के लिए इसे प्राप्त करने का एकमात्र तरीका है जो स्विफ्ट फ़ंक्शन कहता है?

+0

क्या आपको अपने प्रश्न का समाधान मिला है? मुझे भी इसी तरह की ज़रूरत है। अग्रिम में धन्यवाद –

उत्तर

0

यदि कक्षाओं की आपकी रजिस्ट्री एक बंडल में लपेटा गया है, तो आप ट्रांसफॉर्मर को खोजने और पंजीकृत करने के लिए बंडल के प्रिंसिपल क्लास का उपयोग कर सकते हैं। यदि नहीं, तो आप AppDelegate के ऐप का उपयोग करने के लिए इसे लॉन्च करने के लिए विधि शुरू कर सकते हैं।

किसी भी तरह से, आपको सभी कक्षाओं के माध्यम से खोज करने और अपनी इच्छित चीज़ें पंजीकृत करने की आवश्यकता होगी। इसे पूरा करने के लिए उद्देश्य-सी में अच्छा objc_getClassList() है, स्विफ्ट के लिए मुझे एक दिलचस्प गलती मिली जो इस समारोह को स्विफ्ट में जोड़ती है: https://gist.github.com/bnickel/410a1bdc02f12fbd9b5e

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