Home Testo Corso IOS Come funziona una Applicazione

Come funziona una Applicazione

987
0
Come-funziona-una-Applicazione

In questa lezione vediamo come funziona una applicazione IOS.

Prima di vedere il funzionamento dei diversi elementi messi a disposizione di Xcode è giusto dare uno sguardo su come funziona il dispositivo sia esso un iPhone, iPad, apple Watch ecc ecc.

Partiamo da nozioni che, potrebbero essere considerate banali.

L’iPhone è un dispositivo elettronico. I componenti elettronici vengono anche comunemente chiamati hardware del dispositivo.

L’hardware è un insieme di componenti fisici, cioè reali e tangibili, come la memoria RAM, la scheda video ed il processore, i quali a loro volta, sono composti da altri piccoli componenti che li collegano tra loro e/o li specializzano.

Il Sistema operativo, che nei dispositivi della mela si chiama iOS, forma l’involucro di base che permette all’utilizzatore di interagire con la componentistica hardware. 

Infatti l’utente finale del dispositivo non ha la minima idea che, tutti questi componenti elettronici, in realtà, svolgono le operazioni che normalmente attribuiamo compiere al sistema operativo.

Quindi il Sistema Operativo iOS è un semplificatore d’attività. Quando premi sullo slide che aumenta e diminuisce il volume, muovendolo da destra a sinistra ti aspetti che il volume diminuisca ma non sai come esso viene eseguito (se ti ricordi l’esempio della macchina fatto nel corso base di Swift).

  • Hardware: Componente elettronico e fisico. Il tasto per accendere l’iPhone, il display, la memoria ram, l’ssd, il processore.
  • Software: Un insieme di istruzioni informatiche, scritte in un linguaggio di programmazione come Swift, o dei programmi/applicazioni.
  • Sistema Operativo o SO: Un software che permette di rendere usufruibile, in maniera semplificata, tutto l’apparato hardware del dispositivo.

Come possiamo notare dalla immagine possiamo dividere il nostro terminale in 3 aree

  • Spazio utente
  • Sistema Operativo
  • Hardware

Le tre aree comunicano in modo bilaterale.

Nello spazio Utente puoi notare che all’interno ci sono 2 sezioni la prima “Applicazioni” dove risiedono tutte le applicazioni di sistema e quelle installate da noi mentre nella seconda sezione troviamo tutti i “Servizi” presenti tipo GPS, Fotocamera Wi-Fi ecc ecc.

Quando per esempio vuoi scattare una foto, apri l’applicazione Fotocamera, premi il bottone per scattare la foto e in fine vedi la foto sullo schermo.

Nello specifico quando premi il bottone per scattare la foto, lo spazio utente invia un messaggio al sistema operativo.

Il sistema operativo fa dei controlli e se tutto va bene da il permesso per scattare la fotografia.

Allora iOS invia un messaggio all’Hardware fotografico che scatta la foto. La foto scattata, a questo punto, fa il percorso inverso risalendo fino allo spazio utente.

Quindi possiamo dire che il sistema operativo si comporta anche da filtro.

Il sistema operativo infatti controlla tutte le richieste se possibili vengono attivate altrimenti rifiutate.

Ecco perché per esempio alcune funzioni non sono disponibili tipo l’invio di una immagine tramite bluetooth, non perché non sia possibile a livello hardware ma perché non autorizzate dal sistema operativo.

Quando senti parlare di Jailbreak significa che qualche programmatore sfruttando una vulnerabilità di iOS modifica questa gerarchia porta lo spazio utente allo stesso livello del sistema operativo.

Così facendo lo spazio utente ha sbloccate tutte le funzionalità che prima erano permesse al sistema operativo questo però mette a rischio la sicurezza, le informazioni personali e la stabilità dell’intero sistema.

Fatta questa premessa, ora è arrivato il momento di iniziare a scoprire come funziona un’applicazione iOS con il linguaggio Swift.

Quando come detto precedentemente crei una applicazione essa viene inserita nello spazio Utente e come visto nella lezione scorsa essa è composta da più file.

Il primo file importante che da analizzare e il file l’AppDelegate.swift

import UIKit
 
@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {
 
    var window: UIWindow?
 
 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        return true
    }
 
    func applicationWillResignActive(_ application: UIApplication) {}
 
    func applicationDidEnterBackground(_ application: UIApplication) { }
 
    func applicationWillEnterForeground(_ application: UIApplication) {}
 
    func applicationDidBecomeActive(_ application: UIApplication) {}
 
    func applicationWillTerminate(_ application: UIApplication) {}
}

Ora analizzando il file tramite le conoscenze che hai acquisito nel corso basico di Swift, possiamo dire che questo file contiene una classe che eredita una altra classe chiamata UIResponder ed implementa il protocollo UIApplicationDelegate.

Al suo interno poi essa contiene diverse proprietà e metodi.

All’inizio del file è presente la dicitura import UIKit che serve per implementare il framework che contiene tutte le classi per la gestione, la manipolazione e la visualizzazione di tutti gli elementi che compongono un’interfaccia utente (User Interface).

Questi framework nascono per dare allo spazio utente gli strumenti di base per lavorare con il sistema operativo e con l’hardware.

É solo grazie a questi che riuscirai a sviluppare le tue applicazioni. Infatti esistono svariati framework, come ad esempio il CoreLocation, che ci permette di accedere alle funzionalità del GPS e della mappa.

Quindi, un framework, oltre ad essere una collezione di classi è un pacchetto di funzionalità che ci permette di lavorare in simbiosi con le parti del blocco hardware e del sistema operativo.

Subito sotto poi troviamo questa istruzione @UIApplicationMain

Questo è un marcatore che indica il punto d’ingresso dell’applicazione ovvero quando premi sull’icona di una applicazione, è da qui che comincia ad essere eseguito il codice dell’applicazione.

Ora non mi dilungo nelle spiegazioni teoriche di tutto il processo ma ti dico solo che una volta svolte alcune operazioni dopo il click sulla icona della applicazione il sistema oprativo se andato tutto a buon fine carica prima il file Launch Screen.storyboard o dopo qualche secondo Il file Main.storyboard.

Il primo metodo all’interno della classe infatti è

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    return true
}

Questo metodo che viene attivando quando l’applicazione finisce l’inizializzazione di tutti componenti.

Gli altri metodi presenti servo a gestire i cambiamenti di stato della applicazione e verranno trattati durante il corso ma per esempio quando premi il tasto home e vai in un’altra applicazione o nella home dell’iPhone, l’applicazione aperta passa dallo stato di run allo stato di background.

Infatti anche per questo stato d’esecuzione la UIApplication manda un messaggio all’AppDelegate che viene intercettato dal metodo didEnterInBackground

func applicationDidEnterBackground (_ application: UIApplication) {
}

Quindi possiamo dire che l’applicazione può assumere diversi stati durante il ciclo di utilizzo dopo la sua apertura e termina non come si può pensare quando viene cliccato il tasto Home ma bensì solo quando si clicca 2 volte sul tasto Home (tranne per iPhone x) e si fa uno swipe verso l’alto sulla scheda della applicazione.

Per qualunque dubbio o domanda scrivi un commento in questa lezione.