"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं गो का उपयोग करके सरल मैक ऐप्स कैसे बनाता हूं

मैं गो का उपयोग करके सरल मैक ऐप्स कैसे बनाता हूं

2024-07-29 को प्रकाशित
ब्राउज़ करें:549

मैंने कुछ साल पहले डार्विनकिट शुरू किया था क्योंकि गो के लिए देशी मैक एपीआई में कोई बाइंडिंग नहीं थी। हमने धीरे-धीरे प्रोजेक्ट को बाइंडिंग और जेनरेशन टूलिंग में बदल दिया है ताकि किसी दिन सभी ऐप्पल एपीआई की पूर्ण कवरेज तक पहुंच सके। पिछले सप्ताह v0.5.0 की रिलीज़ इस परियोजना की अब तक की सबसे बड़ी रिलीज़ है:

  • लगभग पूर्ण कवरेज के साथ 33 फ्रेमवर्क के लिए बाइंडिंग:
    • 2,353 कक्षाएं
    • 23,822 विधियां और गुण
    • 9,519 स्थिरांक/गणना
    • 543 संरचनाएं
  • एपीआई में देशी गो अंतर्निहित प्रकारों का स्वचालित रूपांतरण और उपयोग
  • ब्लॉक तर्कों के लिए समर्थन क्योंकि गो ठीक से टाइप किए गए तर्कों के साथ काम करता है
  • पूर्व-निर्मित प्रतिनिधि कार्यान्वयन पर आप आसानी से गो फ़ंक्शन सेट कर सकते हैं
  • ऑब्जेक्टिव-सी प्रतीकों के लिए 1-टू-1 मैपिंग जबकि अभी भी गो के लिए मुहावरेदार है
  • उस प्रतीक पर आधिकारिक ऐप्पल डॉक्स के लिंक सहित सभी प्रतीकों के लिए दस्तावेज़ीकरण
  • प्रायोजकों के लिए उच्च गुणवत्ता वाले उदाहरण स्टार्टर ऐप्स का बढ़ता संग्रह

Demo Screenshots

गो की कुछ पंक्तियों में एक देशी वेबव्यू विंडो एप्लिकेशन बनाने के लिए डार्विनकिट का उपयोग करके यहां एक त्वरित उदाहरण दिया गया है:

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 के लिए बाइंडिंग तैयार करते हैं। अगर कोई इसे आईओएस पर लाने में मदद करना चाहता है ताकि लोग गो के साथ ऐप्पल मोबाइल ऐप बना सकें, तो कृपया संपर्क करें!

तब तक, हमें अब तक जो भी मिला है, उससे एक ऐप बनाने का प्रयास करें। मुझे बताएं कि यह कैसे जाता है!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/progrium/how-i-build-simple-mac-apps-using-go-104j?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3