macOS In evidenza

Sviluppare app native macOS con SwiftUI

Guida completa per iniziare a sviluppare applicazioni native per macOS utilizzando SwiftUI.

Sviluppare App Native macOS con SwiftUI

SwiftUI ha trasformato il modo in cui gli sviluppatori Apple costruiscono interfacce utente. Introdotto nel 2019, questo framework dichiarativo permette di creare app native per macOS, iOS, iPadOS, watchOS e tvOS con un unico codebase condiviso e una sintassi elegante.

Perché SwiftUI per macOS

Rispetto al predecessore AppKit, SwiftUI offre vantaggi concreti:

  1. Sintassi dichiarativa — Descrivi cosa vuoi vedere, non come costruirlo passo per passo.
  2. Live Preview in Xcode — Vedi le modifiche in tempo reale senza compilare e avviare l'app.
  3. Interoperabilità — Puoi integrare componenti AppKit esistenti tramite NSViewRepresentable.
  4. Cross-platform — Lo stesso codice funziona su iOS e macOS con adattamenti minimi.
  5. Animazioni facili — Sistema di animazione basato su fisica che si attiva con una singola modifica.

La tua Prima Finestra macOS

Creare una finestra con SwiftUI per macOS è sorprendentemente semplice:

import SwiftUI

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .commands {
            CommandGroup(replacing: .newItem) {
                Button("Nuovo documento") { createDocument() }
                    .keyboardShortcut("n", modifiers: .command)
            }
        }
    }
}

struct ContentView: View {
    @State private var selectedItem: String?

    var body: some View {
        NavigationSplitView {
            SidebarView(selection: $selectedItem)
        } detail: {
            DetailView(item: selectedItem)
        }
    }
}

Gestione dello Stato

Il ciclo di vita dei dati in SwiftUI si basa su property wrapper:

// Stato locale al componente
@State private var count = 0

// Stato condiviso tra componenti figlio
@Binding var isVisible: Bool

// Oggetto osservabile (Swift 5.9+)
@Observable class UserSettings {
    var theme: Theme = .dark
    var fontSize: Double = 14
}

// Uso nella view
@Environment(UserSettings.self) var settings

Componenti macOS Specifici

SwiftUI offre componenti pensati per il desktop:

  • NavigationSplitView — Layout a colonne tipico delle app macOS (mail, note)
  • Table — Tabelle native con colonne ordinabili e selezione multipla
  • HSplitView / VSplitView — Divisori ridimensionabili dall'utente
  • MenuBarExtra — App nella menu bar di macOS
  • Settings — Finestra preferenze nativa con Form e TabView
MenuBarExtra("CodeRS", systemImage: "terminal") {
    Button("Apri progetto") { openProject() }
    Divider()
    Button("Esci") { NSApplication.shared.terminate(nil) }
}
.menuBarExtraStyle(.menu)

Interoperabilità con AppKit

Quando SwiftUI non basta, puoi usare componenti AppKit:

struct WebView: NSViewRepresentable {
    let url: URL

    func makeNSView(context: Context) -> WKWebView {
        return WKWebView()
    }

    func updateNSView(_ nsView: WKWebView, context: Context) {
        nsView.load(URLRequest(url: url))
    }
}

Best Practices

  • Separa la logica dalla UI — Usa il pattern MVVM con @Observable per mantenere le view pulite
  • Evita lo stato globale — Preferisci @Environment per passare dipendenze invece di singleton
  • Preview multipli — Testa le tue view con dati diversi usando #Preview
  • Profila con Instruments — Usa il template SwiftUI per individuare render non necessari

Conclusioni

SwiftUI è ormai maturo abbastanza per costruire applicazioni macOS professionali. Con ogni versione di Xcode e macOS, il framework diventa più completo e performante. Se stai iniziando un nuovo progetto macOS nel 2024, SwiftUI è la scelta giusta.

Per approfondire, visita la documentazione ufficiale Apple o segui i tutorial su developer.apple.com.

Tag

Condividi