All posts by Valerio Ferrucci

Valerio Ferrucci (valfer) develops software on Apple Macintosh since the 1990s until today for MacOS, OSX and, since some years, iOS. He is also a Web (PHP/MySQL/JS/CSS) and Android Developer.

iOS8 Layout Margins

iOS8 SDK introduces a new concept: the “layout margins”. A new property has been added to the UIView class:

These 4 values (the UIEdgeInsets fields) represent the margins of the view. Its subviews can now be positioned relative to these  margins.

For example, this is the result of an inside view whose leading space to the superview is 0 (relative to margin):

Schermata 2014-09-15 alle 13.09.59

Continue reading iOS8 Layout Margins

Swift @autoclosure

it Dichiariamo in swift una funzione che prende come parametro una stringa e una closure:

Come si vede la closure (getPrefix) è usata internamente per ottenere il prefisso da inserire prima della stampa della stringa.

Continue reading Swift @autoclosure

Transizioni adaptive e showViewController

it Nelle nostre app utilizziamo abitualmente l’UINavigationController, cioè un container che ci permette di mostrare tutte le nostre sotto-interfacce (UIViewController, o subclass di questa, di seguito VC) come se fossero idealmente disposte in uno stack tramite il quale possiamo navigare fra di esse avanti e indietro (push e pop).

Continue reading Transizioni adaptive e showViewController

Novità in Swift Beta 4

it Novità in Swift Beta 4:

  • Access control: li aspettavamo, e in effetti ora possiamo aggiungere alle nostre definizioni gli attributi di visibilità: private (visibile solo nel file corrente), internal (il default, visibile in tutto il target corrente), public (visibile anche in altri target/framework). Interessante anche l’uso di attributi come: private(set) che vuol dire “in lettura (get) per tutto il target ma modificabile (set) solo dal corrente file”.

Continue reading Novità in Swift Beta 4

Modifiche a Swift nella Beta 3

it La Beta3 di iOS8 e Yosemite ha portato alcuni cambiamenti in Swift abbastanza rilevanti. Forse dovremo abituarci a queste modifiche da qui alla uscita ufficiale, ancora molte cose mancano o sono da completare (per esempio le public private protected sui membri delle classi ancora non si vedono).

Le modifiche sono:

  • Gli array ora hanno un comportamento nelle copie identico a dictionary e string, cioè per valore (non reference). Prima di questa modifica gli array in alcuni casi non venivano copiati ma condivisi fra più variabili (shared, per motivi di performance). Il metodo unshare per gli array non esiste più.
  • L’operatore range non inclusivo (half closed) è diventato ..< (prima era solo ..)
  • Nuova sintassi breve per array: [String] (quella di prima “String[]” continua ad essere valida ma si preferisce la nuova)
  • Aggiunta una seconda notazione shorthand per i dictionary: [KeyType: ValueType], esempio: var myDict : [String, Int]

Swift optionals

it Il nuovo linguaggio Swift introdotto da Apple alla WWDC 2014 sarà il linguaggio ufficiale con cui sviluppare App per iOS (e per MacOSX).

Già si discute molto se (o quando) l’Objective-C sarà completamente rimpiazzato. Io credo presto, anche se al momento ne abbiamo ancora bisogno per alcune funzionalità non  ancora pronte in Swift (provate a trasformare una stringa in float).

Una delle caratteristiche per me più innovative in Swift sono gli optionals. Per quanto ne so non esiste analogo in altri linguaggi (attendo smentite).

Continue reading Swift optionals

La velocità di Swift

it Sappiamo che Swift promette di essere più veloce di Objective-C. Al momento non si eseguono benchmark perché il nuovo linguaggio è ancora in beta ma già immaginiamo il perché di tale miglioramento delle prestazioni.

In questo interessante articolo di Mike Ash (trovato via Dave Verwer) noto due cose interessanti:

  • La superiore velocità di Swift non sarà  data solo dall’uso delle vtable (in Swift le classi hanno già al momento della compilazione un tabella degli indirizzi dei metodi d chiamare) rispetto al dynamic bind (Objective-C aspetta il runtime per decidere e calcolare l’indirizzo dei metodi). Il compilatore potrà applicare ulteriori ottimizzazioni riguardanti, tra l’altro, la allocazione della memoria e un efficiente uso dei registri.
  • Sembra che addirittura Swift sarà in alcuni casi più veloce del C. Questo perché l’uso in C dei puntatori ha come effetto l’aliasing che in alcuni casi impedisce l’ottimizzazione del codice stesso.

Buona lettura.