Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 7 di 32
  • livello intermedio
Indice lezioni

Avvio dell'applicazione: AppDelegate e window

Cosa accade quando viene avviata un'applicazione su dispositivi iOS: i primi metodi chiamati e inizializzazione della windows
Cosa accade quando viene avviata un'applicazione su dispositivi iOS: i primi metodi chiamati e inizializzazione della windows
Link copiato negli appunti

Prima di analizzare il codice generato da Xcode, è necessario fare una breve introduzione su ciò che accade quando viene eseguita un'applicazione su dispositivi iOS. Al momento del lancio dell'app, viene istanziato un oggetto singleton della classe UIApplication il quale svolge il ruolo di coordinatore dell'intera applicazione smistando i vari eventi, generati dall'utente, verso gli oggetti opportuni.

Successivamente alla creazione dell'oggetto singleton della classe UIApplication viene creata un'istanza della classe AppDelegate. Il singleton è un design pattern di tipo creazionale ed il suo compito è quello di assicurare che durante l'esecuzione dell'applicazione (o di un programma in generale), una determinata classe venga istanziata una sola volta.

Passando all'analisi del codice prodotto da Xcode, possiamo vedere che nella parte sinistra dell'interfaccia, abbiamo una gerarchia di cartelle.

Figura 18: Struttura del progetto Empty Application

Figura 18: Struttura del progetto Empty Application

Per il momento trascuriamo tale gerarchia e concentriamo la nostra attenzione sull'unica classe Objective C presente: l'AppDelegate. Clicchiamo dunque sul file
AppDelegate.h (header file) ed andiamo ad analizzarne il codice, che per comodità riportiamo di seguito:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end

Come possiamo vedere la classe AppDelegate deriva dalla classe UIResponder (che rappresenta la superclasse di UIApplication) ed implementa il protocollo UIApplicationDelegate. La derivazione dalla classe UIResponder è necessaria per
poter ricevere i tocchi da parte dell'utente e l'implementazione del protocollo UIApplicationDelegate è necessaria per poter implementare alcuni metodi che ci informano sugli eventi chiave durante l'esecuzione dell'applicazione come la sua terminazione, l'entrata in uno stato di inattività e molto altro.

Clicchiamo adesso sul file AppDelegate.m (il file di implementazione). Come possiamo vedere è presente una lista di metodi già implementata, ma concentriamo la nostra attenzione sul metodo application: didFinishLaunchingWithOptions:. Quest'ultimo è il primo metodo che viene chiamato nel momento in cui l'applicazione viene lanciata ed è proprio qui che possiamo intervenire per inizializzare l'applicazione stessa e prepararla alla sua esecuzione.

La prima direttiva che troviamo in questo metodo è l'allocazione di un oggetto UIWindow che è indispensabile nella struttura di un'applicazione iOS in quanto rappresenta la root della gerarchia di viste che andremo ad aggiungere successivamente. Inoltre la window ha il compito di distribuire gli eventi alle viste presenti nella sua gerarchia. Come possiamo vedere la window viene allocata con frame (approfondiremo il concetto più avanti) pari alla dimensione dello schermo del dispositivo che stiamo utilizzando mediante la seguente linea di codice:

[[UIScreen mainScreen] bounds]

La corretta inizializzazione della dimensione della window è importante per permettere ad ogni view (appartenente alla sua gerarchia) di ricevere i tocchi da parte dell'utente.

L'ultima linea di codice presente nel metodo application: didFinishLaunchingWithOptions: rappresenta l'invocazione del metodo makeKeyAndVisible sulla window che di fatto la rende visibile a schermo.

Ti consigliamo anche