मैंने कुछ साल पहले डार्विनकिट शुरू किया था क्योंकि गो के लिए देशी मैक एपीआई में कोई बाइंडिंग नहीं थी। हमने धीरे-धीरे प्रोजेक्ट को बाइंडिंग और जेनरेशन टूलिंग में बदल दिया है ताकि किसी दिन सभी ऐप्पल एपीआई की पूर्ण कवरेज तक पहुंच सके। पिछले सप्ताह v0.5.0 की रिलीज़ इस परियोजना की अब तक की सबसे बड़ी रिलीज़ है:
गो की कुछ पंक्तियों में एक देशी वेबव्यू विंडो एप्लिकेशन बनाने के लिए डार्विनकिट का उपयोग करके यहां एक त्वरित उदाहरण दिया गया है:
package main import ( "github.com/progrium/darwinkit/objc" "github.com/progrium/darwinkit/macos" "github.com/progrium/darwinkit/macos/appkit" "github.com/progrium/darwinkit/macos/foundation" "github.com/progrium/darwinkit/macos/webkit" ) func main() { // runs macOS application event loop with a callback on success macos.RunApp(func(app appkit.Application, delegate *appkit.ApplicationDelegate) { app.SetActivationPolicy(appkit.ApplicationActivationPolicyRegular) app.ActivateIgnoringOtherApps(true) url := foundation.URL_URLWithString("https://github.com/sponsors/darwinkitdev") req := foundation.NewURLRequestWithURL(url) frame := foundation.Rect{Size: foundation.Size{1440, 900}} config := webkit.NewWebViewConfiguration() wv := webkit.NewWebViewWithFrameConfiguration(frame, config) wv.LoadRequest(req) w := appkit.NewWindowWithContentRectStyleMaskBackingDefer(frame, appkit.ClosableWindowMask|appkit.TitledWindowMask, appkit.BackingStoreBuffered, false) objc.Retain(&w) w.SetContentView(wv) w.MakeKeyAndOrderFront(w) w.Center() delegate.SetApplicationShouldTerminateAfterLastWindowClosed(func(appkit.Application) bool { return true }) }) }
40 से कम पंक्तियों में हमने XCode खोले या ऑब्जेक्टिव-सी का उपयोग किए बिना एक देशी मैक ऐप बनाया। मुझे लगता है कि यह अब Apple API के लिए अस्तित्व में सबसे अच्छा बाइंडिंग प्रोजेक्ट हो सकता है। संभवतः मैक पर छोटी उपयोगिताएँ बनाने का सबसे अच्छा तरीका भी। और जल्द ही अन्य Apple डिवाइस भी।
डार्विनकिट में एक बड़ी कमी है: ऐप्पल फ्रेमवर्क फ़ंक्शंस के लिए कोई बंधन नहीं हैं। सौभाग्य से, अधिकांश ढाँचे OOP के साथ बनाए गए हैं, जिनके लिए अभी हमारे पास बेहतरीन बाइंडिंग हैं। लेकिन कुछ ढाँचे, विशेष रूप से निचले स्तर के ढाँचे, अधिकतर कार्य हैं। जबकि एक समाधान है जिसमें सीजीओ का उपयोग करना शामिल है (जिसे डार्विनकिट आपको टालने में मदद करने की कोशिश कर रहा है), हम प्रत्येक फ्रेमवर्क फ़ंक्शन के लिए मूल गो फ़ंक्शन बाइंडिंग उत्पन्न करने पर काम कर रहे हैं।
दूसरी बड़ी चीज़ जिस पर हम काम कर रहे हैं वह यह है कि डार्विनकिट सीजीओ का बिल्कुल भी उपयोग न करे! प्योरगो का उपयोग करके, हम सीजीओ को शामिल किए बिना ऐप्पल फ्रेमवर्क में कॉल कर सकते हैं। इससे निर्माण समय में सुधार होगा, छोटे बायनेरिज़ बनेंगे, और डार्विनकिट को उन कार्यक्रमों में उपयोग करने की अनुमति मिलेगी जिन्हें किसी भी कारण से सीजीओ से बचने की आवश्यकता है।
आईओएस और मोबाइल डेवलपर्स के लिए, मैं वास्तव में इसे आईओएस के लिए काम में लाना चाहता हूं। वास्तव में, यह पहले से ही होना चाहिए! लेकिन हम अभी MacOS के लिए बाइंडिंग तैयार करते हैं। अगर कोई इसे आईओएस पर लाने में मदद करना चाहता है ताकि लोग गो के साथ ऐप्पल मोबाइल ऐप बना सकें, तो कृपया संपर्क करें!
तब तक, हमें अब तक जो भी मिला है, उससे एक ऐप बनाने का प्रयास करें। मुझे बताएं कि यह कैसे जाता है!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3