Elemente de arhitectură aplicație IOS

Elemente pe care le descopăr în App Programming Guide for iOS și care consider că sunt relevante pentru dezvoltarea unei aplicații:

1. tabul Info -> Custom iOS Target Properties -> Application uses Wi-Fi trecut pe TRUE.Necesar dacă aplicația comunică cun un server. Poate fi setat și din cod.

2. Application life cycle – nu insist acum pe cele cinci stări ci pe metodele care permit tranziția între stări. Aceste metode definesc cine intră în scenă atunci când rulez o aplicație:

application:willFinishLaunchingWithOptions: — execută pentru prima oară cod în aplicație după lansare

application:didFinishLaunchingWithOptions: — înainte ca aplicația să fie afișată utilizatorului se fac ultimele inițializări.

applicationDidBecomeActive: — Aplicația va fi în curând disponibilă în Foreground. Aici se pot face ultimele ajustări înainte de a fi vizibilă.

applicationWillResignActive: — aplicația intră în mod de Inactive.

applicationDidEnterBackground: — aplicația a intrat în mod de Background.

applicationWillEnterForeground: — aplicația a trece din Background în mod de Foreground, însă nu este încă activă.

applicationWillTerminate: – Aplicația trece în stare de Suspended.

3. Pentru a bloca aplicația să ruleze în background  -> “Application does not run in background” -> YES. În acest caz la apăsarea butonului Home se apelează applicationWillTerminate: Aplicația va avea aproximativ 5 secunde să își facă clean up și să închidă/salveze.

4. Diagrama tranzițiilor de stare IOS



 

Aici sunt detaliate toate IOS keys din info.plist

 

Share Button

SWIFT – cum folosim Closures?

Closures în SWIFT au fost gândite și folosite ca un exemplu de funcții inline. Din experiența mea, “closures” sunt folosite în completion blocks pentru a notifica faptul că un block și-a terminat activitatea.

Un mic exemplu didactic – Universitatea din Toronto:

func performMagic (spell: String) -> String {
return spell
}

Avem o funcție simplă ce va primi printr-un argument un string și-l va returna.

Vom folosi closure pentru a defini o variabilă ce va “conține” corpul acestei funcții:

var newPerformMagic = {
(spell:String) -> String in
return spell
}

Pnetru a utiliza, e suficient
newPerformMagic(“test de closure”)

Share Button

Raphaël Marionneau

Îmi place Abstrait. Cafe Abstrait. Iar Raphaël Marionneau este cel ce-a definit acest concept. Le Café Abstrait Vol. 6 cred că este cel mai bun exemplu al acestui curent.
Acum îl ascult pe Raphaël Marionneau aici, sesiunile fiind luate de pe mixcloud.

Share Button

Application Lifecycle – IOS

Metodele marcate cu rosu sunt importante in procesul de Data Persistence – folosire NSCoding.

IOS - application lifecycle

Share Button

Diagrama MVC – IOS

O aplicatie bine facuta IOS respecta principiile programarii MVC – Model – View – Controller.
O explicatie vizuala foarte buna despre “circulatia” in interiorul unei aplicatii IOS in poza de mai jos:
Model MVC IOS

In cazul in care datele din Model sunt aduse dintr-un JSON, exista posibilitatea ca ceea ce se doreste a se afisa in View sa NU existe la momentul afisarii, acest lucru datorandu-se faptului ca initializarea din JSON se face asincron:

MVC JSON fara NSNotification

Pentru a remedia acest aspect, avem nevoie de o intarziere. O intarziere care este de fapt o notificare pe care, atunci cand apare, o va capta controller-ul si va “da drumul” la executarea elementelor de View:

Model MVC cu NSNotification

Share Button