स्विफ्ट से सी में कॉल करना बहुत आसान है, हालांकि मैं सी में द्वि-दिशात्मक रैपर बनाने की सोच रहा हूं, इसलिए मेरे सी को स्विफ्ट फ़ंक्शंस को कॉल करना है।सी से स्विफ्ट में कॉल करने का सबसे अच्छा तरीका क्या है?
अभी, मैं सी में फ़ंक्शन पॉइंटर्स घोषित करके ऐसा कर सकता हूं, और स्विफ्ट पक्ष ने उन्हें स्विफ्ट में कॉल कोड पर सेट करने के बाद उन्हें कॉल करने के बाद कॉल किया है।
मेरे सी हेडर फाइल:
typedef void (*callback_t)(void);
void callBackIntoSwift(callback_t cb);
मेरे सी कार्यान्वयन फ़ाइल:
#include "stuff.h"
#include <stdio.h>
void callBackIntoSwift(callback_t cb)
{
printf("Will call back into Swift\n");
cb();
printf("Did call back into Swift\n");
}
ब्रिजिंग शीर्षक में मेरी सी हेडर फाइल सहित के बाद, मैं स्विफ्ट की ओर निम्न कर सकते हैं:
let cb: callback_t = {
someKindOfSwiftFunction()
}
callBackIntoSwift(cb)
या भी:
callBackIntoSwift {
someKindOfSwiftFunction()
}
क्या ऐसा करने का कोई बेहतर तरीका है, जहां फ़ंक्शन पॉइंटर्स और कॉलबैक की आवश्यकता नहीं है? मैं सीधे सी-साइड कॉल someKindOfSwiftFunction
को कॉल करना चाहता हूं ... लेकिन जब मैं घोषणाओं को कार्य करने के लिए @convention (c)
लागू करने का प्रयास करता हूं तो मुझे यह संदेश मिलता है कि विशेषता केवल प्रकारों पर लागू की जा सकती है, न कि घोषणाओं।
उदा। किसी भी विचार या कोडबेस उदा। गितूब मैं देख सकता हूं?
ओपी, कैसे कॉल करने के लिए नहीं एक ऑब्जेक्टिव-सी विधि – pbush25
लेखक swif कॉल करना चाहते हैं सी से टी कोड। "स्विफ्ट से सी में कॉल करना बहुत आसान है, हालांकि मैं सी में द्वि-दिशात्मक रैपर बनाने की सोच रहा हूं, इसलिए मेरे सी को स्विफ्ट फ़ंक्शंस को कॉल करना है।" @ pbush25 – Rolan
शायद मैं अपनी टिप्पणी बढ़ा सकता हूं। 'स्विफ्टफंक्शनक्शन()' फ़ंक्शन को किसी भी सी फ़ाइल से बुलाया जा सकता है। – Rolan