Cocoa Tip & Tricks – Memory Management e Notifications
Apple • Cocoa • Development • iOS • iPad • iPhone
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!