我是一个 Objective-C 新手。我正在为可变性/不变性这两个概念而苦苦挣扎。我正在阅读一本名为 Programming in Objective-C 4th Edition 的书。第 15 章讨论了NSString
被声明为不可变的类。然后,这本书提供了一些似乎与此相矛盾的例子,例如:
NSString *str1 = @"this is string A";
NSString *str2 = @"this is string B";
str2 = [str1 stringByAppendingString:str2];
NSString *res;
res = [str1 substringToIndex:3];
res = [str1 substringFromIndex:5];
res = [[str1 substringFromIndex:8]substringToIndex:6];
res = [str1 substringWithRange:NSMakeRange(8, 6)];
所以即使'res'是一个指向不可变对象的指针,它的值已经改变了好几次,那怎么能称为不可变呢?我想我完全没有抓住重点。任何建议,感激不尽。