我读了这个答案https://stackoverflow.com/a/833124/5175709以及其他一些问题。据我了解,由于对象可能会扩展并耗尽空间,因此内存位置也会发生变化。我一直不明白为什么我们不应该将 **
用于 NSMutableData
或 NSMutableArray
因为它们也可以用任何 add
扩展>ing 或 append
ing 并需要更多空间。
不对的地方请指正。我很困惑。
最佳答案
NSMutableArray *
和 NSMutableData *
不是直接指向所包含数据的指针。他们更多的是沿着这条线:
struct MutableData {
void * data;
void (*appendBytes)(void * bytes);
// etc.
};
当它们需要重新分配以进行扩展(或收缩)时,它们会操纵一个内部指针。作为包含实例的用户,您不会与之交互。
关于objective-c - 为什么可变对象不需要双指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36628775/