मैं उद्देश्य-सी के साथ लुआ को इंटरफ़ेस करने की कोशिश कर रहा हूं, और मुझे लगता है कि NSSelectorFromString()
के साथ स्ट्रिंग रूपांतरण बहुत अधिक है क्योंकि लूआ को सभी तारों को आंतरिक बनाने के लिए कॉपी करना है (हालांकि मुझे इसके बारे में निश्चित नहीं है)।क्या मैं उद्देश्य-सी में एसईएल को किसी सूचक के रूप में मान सकता हूं और संभाल सकता हूं?
तो मैं लुआ में एक चयनकर्ता का प्रतिनिधित्व करने के लिए अधिक हल्के तरीके खोजने की कोशिश कर रहा हूं। एक ऑब्जेक्टिव-सी चयनकर्ता एक पृथक प्रकार है, लेकिन यह कुछ के सूचक के रूप में परिभाषित किया गया है:
typedef struct objc_selector *SEL;
तो यह एक नियमित रूप से सूचक के रूप में संभाल करने के लिए सुरक्षित लग रहा है, तो मैं lightuserdata
साथ लुआ को इसे पारित कर सकते हैं। क्या यह ठीक है?
सी तारों का उपयोग करने में मदद मिलेगी? आप 'NSSelectorFromString()' के बजाय 'sel_registerName()' का उपयोग कर सकते हैं, और पूर्व एक सी स्ट्रिंग तर्क स्वीकार करता है। अन्यथा, यदि आप उद्देश्य-सी कोड से लूआ/सी कोड में चयनकर्ता प्राप्त कर रहे हैं तो आप 'शून्य' के रूप में 'SEL' का इलाज कर सकते हैं। –
मजेदार बात यह है कि एक एसईएल पहले से ही एक सी स्ट्रिंग के लिए एक सूचक है ... नहीं कि मैं आपको इसका उपयोग करने के लिए प्रोत्साहित करना चाहता हूं। – JustSid
एक एसईएल एक सी स्ट्रिंग के लिए एक सूचक है लेकिन यह एक बहिष्कृत कार्यान्वयन विस्तार है। – Lothar