我是 Objective-C 新手,需要有关指针概念的帮助。我写了这段代码:
//myArray is of type NSMutableArray
NSString *objectFromArray = [myArray objectAtIndex:2];
[objectFromArray uppercaseString];
我认为这会更改 myArray[2] 处的字符串,因为我得到了指向它的实际指针。对取消引用的指针的任何更改是否都意味着该位置中的对象发生更改?或者这与“字符串不变性”有关?不管怎样,当我使用 NSLog 并迭代 myArray 时,所有字符串仍然是小写。
最佳答案
Shouldn't any changes to the dereferenced pointer mean that the object in that location changes?
是的,他们会的。但是如果您阅读uppercaseString 的文档,您会发现它不会就地修改字符串。相反,它返回原始字符串的新大写版本。 NSString
上的所有方法都是这样工作的。
您需要一个 NSMutableString
实例才能就地修改其内容。但是 NSMutableString
没有相应的大写方法,因此您必须自己编写它(作为 NSMutableString
上的类别)。
关于objective-c - 理解数组指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457001/