I mali del secolo

Il titolo lo prendo in prestito da un disco di Celentano. Perché  sono un suo grande fan e perché mi sembra in sintonia.

A volte ho l’impressione che le persone che mi sono intorno (non tutte, ci mancherebbe, ma molte) siano talmente schiave di questo mondo da aver perso completamente ogni senso di esistenza. Da aver perso completamente se stessi.

Poco male per me, ci mancherebbe.

Autodafè

Avete presente come inizia il pezzo di Frankie Hi NRG ‘Autodafè‘?

Prendo le distanze da me perché non voglio avere niente a cui spartire con me, da condividere con chi come me non fa nulla per correggersi: sono il mio nemico, il più acerrimo[...]

e poi ancora:

In cattiva compagnia soprattutto se sto solo[...]

Ecco, per anni mi sono auto-inflitto ogni colpa.. che ci vuoi fare, sono severo con me stesso.
Ora però vorrei smetterla di darmi colpe perché, arrivato ad oggi, ho capito che non ne ho.

Ci sono voluti anni. 7 se non erro. Guarda caso il numero di Dio, ma questo è un altro discorso. Fatto stà che ora basta. Quel che è stato è stato ed è stato necessario. Tutto.

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!