Foundation, il framework che abbiamo importato all'inizio di questa guida e che fornisce molti oggetti che utilizziamo quando sviluppiamo in Objective-C, pone un accento particolare sul concetto di mutability. Molte classi di base (come NSString
, NSArray
, NSDictionary
, etc…) vengono infatti accompagnate da una classe gemella che generalmente contiene la parola Mutable dopo il prefisso NS (NSMutableString
, NSMutableArray
, NSMutableDictionary
). Questo significa che quando utilizziamo una classe come NSString
, stiamo lavorando con un oggetto immutabile. Per capire questa differenza, supponiamo di definire una stringa come segue:
NSString * word = @"Hello”;
L'uso della classe NSString
limiterebbe l'utilizzo dell'oggetto word, poiché non avremmo accesso a tutti quei metodi che permettono la sua modifica. Al contrario, possiamo rendere l'oggetto mutabile come segue:
NSMutableString * word = [NSMutableString stringWithString:@"Hello"];
[word appendString:@" world!"];
NSLog(@"%@", word);
Utilizzando gli oggetti mutabili avremo invece accesso ai metodi che permettono (ad alto livello) di modificarne il contenuto. In questo caso, ad esempio, abbiamo potuto far ricorso al metodo appendString
.