Supponiamo di dover costruire un nuovo NSDictionary, tramite uno dei due metodi della classe
dictionaryWithObjectsAndKeys dictionaryWithObjects:forKeys:dove nel primo si fornisce una serie di coppie oggetto-chiave, mentre nel secondo si forniscono due NSArray, il primo con gli oggetti ed il secondo con le corrispondenti chiavi.
Ho detto "oggetti": infatti, se dobbiamo creare un elemento Booleano, non dobbiamo farci prendere dalla tentazione di inserire la coppia
YES, @"miaChiave"Infatti, mentre
@"miaChiave"
è un oggetto, altrettanto non possiamo dire per YES
! Per come sono definiti nel C, i Booleani sono interi, non oggetti!La scrittura corretta della coppia è
[NSNumber numberWithBool:YES], @"miaChiave"In questo modo, entrambi sono oggetti e la definizione è salva.
Come mai mi capita di dimenticarla? Perché il compilatore non esce con un errore nel caso sbagliato! Al massimo un warning. Anzi, compila perfettamente e lancia l'applicazione senza dire nulla! Salvo poi dare errori strambi, difficili da comprendere, se non dopo aver capito di cosa si tratta.
Nell'ultimo caso, per esempio, funzionava tutto, i valori venivano usati (erano property legati a dei checkbox), ma ad certo momento, completamente slegato dal loro utilizzo, il software andava in crash, senza nessun messaggio di errore! Tempo di debugging: quasi una giornata!
Quindi, occhio agli oggetti!
Nessun commento:
Posta un commento