저는 Go용 기본 Mac API에 대한 바인딩이 없었기 때문에 몇 년 전에 DarwinKit을 시작했습니다. 우리는 언젠가는 모든 Apple API를 완전히 포괄할 수 있도록 프로젝트를 바인딩 및 생성 도구로 천천히 전환해 왔습니다. 지난 주 v0.5.0 릴리스는 이 프로젝트 중 가장 큰 규모입니다.
다음은 DarwinKit을 사용하여 몇 줄의 Go로 기본 WebView 창 애플리케이션을 구축하는 간단한 예입니다.
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 }) }) }
XCode를 열거나 Objective-C를 사용하지 않고 40줄도 안 되는 시간에 기본 Mac 앱을 만들었습니다. 나는 이것이 현재 존재하는 Apple API에 대한 최고의 바인딩 프로젝트가 될 것이라고 생각합니다. 아마도 Mac에서 작은 유틸리티를 만드는 가장 좋은 방법일 수도 있습니다. 그리고 곧 다른 Apple 기기도 출시될 예정입니다.
DarwinKit에는 한 가지 큰 누락된 부분이 있습니다. 바로 Apple 프레임워크 함수에 대한 바인딩이 없다는 것입니다. 운 좋게도 대부분의 프레임워크는 OOP로 구축되었으며 현재로서는 훌륭한 바인딩이 있습니다. 그러나 일부 프레임워크, 특히 하위 수준 프레임워크는 대부분 함수입니다. CGO 사용과 관련된 해결 방법(DarwinKit에서는 이를 방지하기 위해 노력 중)이 있지만 우리는 모든 프레임워크 기능에 대한 기본 Go 기능 바인딩을 생성하기 위해 노력하고 있습니다.
우리가 노력하고 있는 또 다른 중요한 점은 DarwinKit에서 CGO를 전혀 사용하지 않도록 만드는 것입니다! purego를 사용하면 CGO를 사용하지 않고도 Apple 프레임워크를 호출할 수 있습니다. 이를 통해 빌드 시간이 향상되고, 더 작은 바이너리가 만들어지며, 어떤 이유로든 CGO를 피해야 하는 프로그램에서 DarwinKit을 사용할 수 있습니다.
iOS 및 모바일 개발자를 위해 저는 이 기능을 iOS에서 작동시키고 싶습니다. 사실, 이미 그래야 합니다! 하지만 지금은 MacOS용 바인딩을 생성합니다. 사람들이 Go를 사용하여 Apple 모바일 앱을 만들 수 있도록 이 기능을 iOS로 가져오는 데 도움을 주고 싶으신 분은 연락주세요!
그때까지 지금까지 얻은 정보를 바탕으로 앱을 만들어 보세요. 어떻게 진행되는지 알려주세요!
위 내용은 Go를 사용하여 간단한 Mac 앱을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!