Cocoa Tip & Tricks – Memory Management e Notifications

Mi piacerebbe fare una sezione sui trucchetti e i migliori modi di scrivere il codice ma so già che non ce la farò.. però.. intanto inizio!

Memory Management

Ogni volta che si alloca un’istanza di un oggetto si deve rilasciare. Sempre. Ad esempio:

UIView* aView = [[UIView alloc] initWithFrame:CGRectZero];
[self.view addSubview:aView];

dopo è necessario rilasciarlo:

[aView release];
aView = nil;

Ma è importante anche assegnare il puntatore a ‘nil‘, altrimenti c’è la probabilità che punti ad una zona errata della memoria causando dei crash.

Notifications

Le notifiche sono davvero una manna e NSNotificationCenter è davvero ottimo, però bisogna ricordarsi di cancellarsi dalle notifiche, altrimenti si rischia di incappare in crash.

Quando ci registriamo quindi ad una notifica, ad esempio:

[[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(selectorDidHandle:) name:kNotificationKey object:self];

ricordiamoci anche di rimuoverci da tale notifica. In primis, quando non ci serve più, quindi ad esempio all’interno del metodo di handle:

- (void)selectorDidHandle:(NSNotification*)notification
{
   if (notification)
   {
      [[NSNotificationCenter defaultCenter] removeObserver:self name:notification.name object:notification.object];
   }
}

mi raccomando di controllare se ‘notification‘ esiste, perché se fosse ‘nil‘ allora vi rimuovereste da qualsiasi notifica perché inviereste tutti i messaggi ‘nil’ al metodo -removeObserver:name:object: e non è questo che vogliamo.

Come seconda cosa, quando si dealloca l’oggetto che si è registrato ad una qualche notifica, ricordatevi di cancellarvici.

- (void)dealloc
{
   [[NSNotificationCenter defaultCenter] removeObserver:self];

   [super dealloc];
}

Ecco, questi sono i primi tricks che ho voluto condividere con voi.. spero di avere tempo e voglia per dirvene altri..

Buona programmazione!

Vendere un’app su App Store, il punto

Dopo mesi di silenzio e un po’ di numeri in più sono in grado di fare un punto della situazione più preciso per quel che riguarda le vendite su App Store.

Prenderò come esempio La Costituzione Italiana, applicazione che ho iniziato a sviluppare nel 2009 e che ad oggi è arrivata alla versione 2.0 con molte novità e dei buoni numeri di vendita.

Cosa offre quest’app?
Si può consultare tutta la Costituzione Italiana, articolo per articolo. Aggiungere ogni singolo articolo ai preferiti e condividerlo su Facebook, via email o copiando nei clipboard il testo.

I preferiti sono sincronizzati su iCloud, per chi ha iOS5 e l’app è universale per iPhone e iPad.

Quindi come si può vedere quest’app è abbastanza completa e fa bene il suo lavoro.

Per sopperire alle spese di sviluppo è stato inserito un banner iAD e la possibilità di rimuovere lo stesso in modo permanente a 0,79€ tramite InApp Purchase.

Ora, veniamo ai numeri.

Dal 2009 ad oggi l’app è stata scaricata da circa 120.000 utenti.
Ogni giorno l’app fa circa 1500 richieste di banner ad Apple e ne vengono soddisfatte dal 50 al 20%.

Purtroppo iAD non è molto remunerativo. Il CMP è basso circa 1$.

Alla fine della giornata si hanno guadagni che oscillano da 2$ a 0$.

InApp Purchase non è da meno. Circa 2 utenti la settimana acquistano l’iAD Removal, quindi significa che in una settimana i guadagni oscillano da 0,96€ a 0€.

Ci sono stati anche dei momenti d’oro, quando, un anno fa, iAD ha avuto un periodo di circa 2 mesi in cui il CMP era molto alto (10$ o poco meno). In questo periodo ho avuto guadagni che sfioravano i 6$ il giorno. Poco, ma almeno un po’ di soddisfazione c’era.

So che posso fare molto di più e che, forse, la scelta migliore sarebbe stata quella di mettere l’app a pagamento. Non si smette mai di imparare ;)

Spero di avervi dato qualche informazione in più per poter valutare come procedere con i vostri progetti.

Buona programmazione!

Problemi con iCloud – Soluzione provvisoria

In questi giorni ho riscontrato problemi con iCloud. Principalmente l’applicazione (le applicazioni, dato che oltre alla mia Costituzione Italiana pure quella di Apple ‘iTunes Movies’ non funzionava) non riusciva a recuperare i dati da iCloud.

L’errore era sempre lo stesso:

Error Domain=NSCocoaErrorDomain Code=256 “The operation couldn’t be completed. (Cocoa error 256 – The item failed to download.)” UserInfo=0x19a000 {NSURL=file://XXXXX, NSDescription=The item failed to download.}

All’Apple Tech Talk non mi hanno saputo dare alcuna risposta.

Tranquilli sviluppatori, il vostro codice è scritto bene.

A quanto pare il problema sta nei backup di iCloud e nel sistema in cui vengono recuperati. Deve essere cambiato qualcosa dal giorno del lancio di iOS5 ed adesso non riesce a recuperarlo.

La soluzione temporanea è quindi di cancellare il backup dell’applicazione da Impostazioni -> iCloud -> Archivio e Backup -> Gestisci Archiviazione.

Perderemo i nostri dati ma almeno iCloud riprenderà a funzionare correttamente.

Altrimenti bisogna attendere che apple faccia qualcosa. Sperando che lo faccia.

iOS5, iPhone4S e Apple Find My Friends

Ieri Apple ha introdotto iOS5 che verrà rilasciato il 12 Ottobre.

Poi ha parlato del nuovo iPhone 4S e della rivoluzionaria tecnologia chiamata Siri.

Ma nel frattempo ha presentato una nuova applicazione chiamata: “Find My Friends”.

Lì per lì ho detto, toh! un’app che fa quello che faceva la mia tempo fa, con gli amici di Facebook.

Ma poi.. cavolo.. ha il nome praticamente uguale a quello della mia app: Get My Friends! Che abbia ispirato Apple? Per niente direi, ma dai, speriamoci almeno! :)

Buona navigazione!