XCODE¶
CICLO DI VITA DELL’APP: UIKIT¶
App Delegate È responsabile del ciclo di vita dell'applicazione e gestisce gli eventi di sistema, come il lancio dell'applicazione, la ricezione di notifiche push, la gestione delle transizioni di stato dell'applicazione, ecc.
Scene Delegate Introdotta con iOS 13, gestisce le finestre dell'applicazione e le scene multiple in un'applicazione. Ogni scena dell'applicazione ha il suo SceneDelegate. Gestisce gli elementi visivi dell'interfaccia utente dell’applicazione.
L'applicazione passa attraverso diversi stati durante il suo ciclo di vita, che includono:
Not running: L'applicazione non è in esecuzione.
Inactive: L'applicazione è in esecuzione, ma non sta ricevendo eventi. Ad esempio, quando viene visualizzato un alert o quando l'applicazione viene spostata in background.
Active: L'applicazione è in primo piano e sta rispondendo agli eventi.
Background: L'applicazione è in esecuzione in background. Può eseguire alcune attività limitate.
Suspended: L'applicazione è in background, ma non sta eseguendo alcun codice.
Entrambi i delegati giocano un ruolo nel gestire il ciclo di vita dell'applicazione e la gestione deglie venti di sistema. Con l'introduzione del SceneDelegate, la gestione delle finestre dell'applicazione è stata separata dall'AppDelegate, consentendo la gestione di più finestre e scene all'interno di un’applicazione.
CICLO DI VITA DELL’APP: SWIFTUI¶
Nelle app SwiftUI moderne, il punto di ingresso principale è una struttura che adotta il protocollo App ed è marcata con @main. Apple definisce il protocollo App come il modo per creare un’app dichiarando una struttura che descrive il contenuto dell’app stessa. All’interno della proprietà body, l’app definisce una o più scene, cioè le parti dell’interfaccia gestite dal sistema.
Scene
Le view sono i mattoncini fondamentali dell’interfaccia. Possono essere elementi semplici, come Text, Image o Button, oppure contenitori di layout come VStack, HStack, ZStack, List, Form e NavigationStack.
State
Una scena rappresenta una parte dell’interfaccia utente che il sistema gestisce nel ciclo di vita dell’app.
Nelle app SwiftUI la scena più comune è WindowGroup, che viene spesso usata come contenitore iniziale delle view dell’app.
Previews
Una delle funzionalità più utili di Xcode con SwiftUI è la possibilità di vedere un’anteprima immediata della view nel canvas.
Canvas
Il canvas di Xcode permette di vedere rapidamente l’aspetto della view senza eseguire tutta l’app nel simulatore.
View controller¶
Nei template UIKit tradizionali può essere creato un file ViewController collegato allo storyboard Main. Si può controllare che il documento swift sia collegato al View Controller Scene nel Main selezionando il primo bottone a forma di cerchio nella barra sopra il View Controller. Aprendo il menu Inspector a destra dal bottone in alto, e selezionando la quarta icona in alto che corrisponde all’Identity Inspector. Nel campo Class sarà presente il nome del documento swift.
Nel Menu Inspector ci sono diversi sottomenu:
File Inspector: permette di visualizzare e modificare le proprietà del file selezionato
History Inspector: consente di visualizzare e navigare tra le modifiche apportate all'interfaccia utente nel corso del tempo, consentendo di ripristinare versioni precedenti se necessario. (Con utilizzo di Git)
Quick Help Inspector: fornisce informazioni sulla funzione e sull’utilizzo dell’oggetto selezionato
Identity Inspector: permette di visualizzare e modificare le proprietà d’identità dell’oggetto selezionato, nome classe e identifier
Attributes Inspector: consente di visualizzare e modificare le proprietà visive e comportamentali degli oggetti dell’interfaccia utente, colore, dimensione etc.
Size Inspector: consente di visualizzare e modificare le dimensioni e la posizione degli oggetti, consentendo un preciso posizionamento e layout degli elementi
Connections Inspector: permette di visualizzare e gestire le connessioni tra gli oggetti dell’interfaccia utente e il codice sorgente, come le action, gli outlet e le gesture recognizer
Nel Menu Navigator ci sono diversi sottomenu:
Project Navigator: fornisce una visualizzazione strutturata di tutti i file e le cartelle nel progetto, incluse le risorse e se presenti le librerie
Source Control Navigator: fornisce un’interfaccia per gestire le modifiche del codice sorgente tramite sistemi di controllo come Git, per visualizzare modifiche, eseguire commit e gestire i rami del progetto
Bookmark Navigator: consente di aggiungere e gestire i segnalibri all’interno del codice
Find Navigator: fornisce strumenti per cercare e navigare tra le occorrenze di testo all’interno del progetto
Issue Navigator: permette di visualizzare e gestire gli avvisi, errori e i warning durante la compilazione del progetto
Test Navigator: consente di organizzare, eseguire e gestire i test unit
Debug Navigator: fornisce i dettagli sullo stato e sul comportamento dell’app durante l’esecuzione, e monitorare variabili, thread etc durante il debug
Breakpoint Navigator: consente di gestire e controllare i breakpoint, facilitando il debug e l’analisi del flusso
Report Navigator: fornisce una cronologia dettagliata delle azioni e degli eventi durante lo sviluppo del progetto, avvisi, operazioni di build etc.
ASSET E RISORSE¶
Xcode include normalmente un catalogo di risorse chiamato Assets.xcassets. Qui si gestiscono immagini, colori, icone dell’app e altre risorse visive. Apple documenta gli asset catalog come il luogo standard per organizzare le risorse dell’interfaccia. Questo è particolarmente importante sia in UIKit sia in SwiftUI, perché immagini e colori del catalogo possono essere richiamati direttamente dal codice.
INFO.PLIST¶
L’Info.plist è un file di configurazione del progetto che contiene metadati e impostazioni dell’app. Tra gli elementi più comuni ci sono nome dell’app, identificatore del bundle, versioni, orientamenti supportati e descrizioni di autorizzazioni richieste, come fotocamera, microfono o posizione. Xcode include questi elementi nella configurazione generale del progetto e in varie sezioni del target.
È importante ricordare che molte funzionalità di sistema richiedono sia codice sia configurazioni corrette del progetto.
DEBUGGING¶
Il debugging è il processo di identificazione, analisi e risoluzione degli errori o bug nel codice di un programma per garantirne il corretto funzionamento. I principali strumenti per il debugging su Xcode:
Debug Navigator Descrizione: Fornisce una panoramica delle chiamate di stack attualmente attive. Mostra i thread in esecuzione e la pila delle chiamate di ciascun thread Utilizzo: Aiuta a individuare i punti in cui il codice è attualmente in esecuzione e a navigare attraverso i frame dello stack per analizzare il flusso di esecuzione Posizione: Si trova nel pannello di navigazione a sinistra, cliccando sull'icona a forma di rombo (l'ottava icona dall'alto) o usando la scorciatoia da tastiera Cmd+7
Variables View Descrizione: Mostra le variabili e i loro valori correnti quando l'esecuzione del programma è in pausa Utilizzo: Consente di ispezionare i valori delle variabili e degli oggetti per comprendere lo stato dell'applicazione in un determinato punto del tempo Posizione: Quando l'esecuzione è in pausa, si trova nella parte inferiore della finestra principale di Xcode, sotto la console. Le variabili locali e le variabili istanze dell'oggetto corrente sono elencate qui
Breakpoints Descrizione: Punti di interruzione impostati nel codice che sospendono l'esecuzione del programma quando raggiunti Utilizzo: Utilizzato per fermare l'esecuzione del programma in punti specifici per ispezionare lo stato dell'applicazione, le variabili e il flusso di esecuzione Posizione: Si possono impostare cliccando sul numero di riga nel codice. Tutti i breakpoints possono essere gestiti nel Breakpoints Navigator (sesta icona nel pannello di navigazione a sinistra) o usando la scorciatoia da tastiera Cmd+8
LLDB Console Descrizione: Console interattiva che permette di eseguire comandi LLDB (Low-Level Debugger) per ispezionare e manipolare l'esecuzione del programma Utilizzo: Utilizzato per eseguire comandi di debug personalizzati, valutare espressioni, modificare variabili e controllare il flusso di esecuzione Posizione: Si trova nella parte inferiore della finestra principale di Xcode, nella barra degli strumenti del debugger, quando l'applicazione è in esecuzione o in pausa. Può essere attivata con Cmd+Shift+C.
View Debugger Descrizione: Strumento visivo che permette di ispezionare la gerarchia delle viste e le loro proprietà. Utilizzo: Utile per risolvere problemi di layout e di rendering delle viste. Consente di vedere come le viste sono organizzate e sovrapposte Posizione: Si può attivare cliccando sul pulsante a forma di cubo 3D nella barra degli strumenti del debugger (nella parte inferiore della finestra principale di Xcode) mentre l'applicazione è in esecuzione o in pausa
Memory Graph Debugger Descrizione: Strumento che visualizza la struttura della memoria dell'applicazione, mostrando gli oggetti in memoria e le loro relazioni Utilizzo: Utilizzato per identificare e risolvere problemi di gestione della memoria, come i cicli di riferimento e i leak di memoria Posizione: Si può attivare cliccando sul pulsante a forma di piramide nella barra degli strumenti del debugger (nella parte inferiore della finestra principale di Xcode) mentre l'applicazione è in esecuzione o in pausa
Instruments Descrizione: Strumento di profiling che consente di analizzare le prestazioni, l'uso della memoria, le risorse di rete e altri aspetti dell'applicazione Utilizzo: Utilizzato per identificare e risolvere problemi di prestazioni, ottimizzare l'uso delle risorse e monitorare il comportamento dell'applicazione in tempo reale Posizione: Si apre come applicazione separata. Può essere lanciata da Xcode selezionando Product > Profile o usando la scorciatoia da tastiera Cmd+I
Network Debugging Descrizione: Strumento che monitora le richieste e le risposte di rete fatte dall'applicazione Utilizzo: Utilizzato per ispezionare le richieste HTTP, le risposte, i tempi di latenza e altri dettagli di rete per risolvere problemi di comunicazione di rete Posizione: I dettagli della rete possono essere trovati nell'app Instruments con il template "Network" o visualizzati nella console di debug nella parte inferiore della finestra principale di Xcode
Test Navigator Descrizione: Consente di eseguire e gestire test unitari e test di interfaccia utente Utilizzo: Utilizzato per eseguire test automatici del codice, verificare che le modifiche non introducano bug e assicurare che il codice soddisfi i requisiti specificati. Posizione: Si trova nel pannello di navigazione a sinistra, cliccando sull'icona a forma di diamante (la settima icona dall'alto) o usando la scorciatoia da tastiera Cmd+6
Console Log Descrizione: Visualizza i messaggi di log generati dall'applicazione durante l'esecuzione. Utilizzo: Utile per tracciare il flusso di esecuzione, debug del comportamento dell'applicazione e identificare messaggi di errore e avvisi Posizione: Si trova nella parte inferiore della finestra principale di Xcode. Può essere visualizzata durante l'esecuzione dell'applicazione o in pausa
Documentazione¶
Xcode integra la documentazione Apple e strumenti rapidi di consultazione del codice. Con Option-click su un simbolo puoi aprire un riepilogo rapido, mentre la documentazione completa è disponibile direttamente dall’ambiente di sviluppo. Apple documenta anche il supporto di Xcode alla scrittura e consultazione della documentazione tecnica.
Questo è utile sia per API UIKit sia per SwiftUI, perché permette di capire rapidamente tipi, metodi, modifier e parametri senza uscire da Xcode.