objective-c - 为什么可变对象不需要双指针?

标签 objective-c pointers memory mutable

我读了这个答案https://stackoverflow.com/a/833124/5175709以及其他一些问题。据我了解,由于对象可能会扩展并耗尽空间,因此内存位置也会发生变化。我一直不明白为什么我们不应该将 ** 用于 NSMutableDataNSMutableArray 因为它们也可以用任何 add 扩展>ing 或 appending 并需要更多空间。

不对的地方请指正。我很困惑。

最佳答案

NSMutableArray *NSMutableData * 不是直接指向所包含数据的指针。他们更多的是沿着这条线:

struct MutableData {
    void * data;
    void (*appendBytes)(void * bytes);
    // etc.
};

当它们需要重新分配以进行扩展(或收缩)时,它们会操纵一个内部指针。作为包含实例的用户,您不会与之交互。

关于objective-c - 为什么可变对象不需要双指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36628775/

相关文章:

ios - 覆盖iOS音频输出

objective-c - UIwebview 中的 UIActivity 指示器

objective-c - 是否可以从 Swift 代码中捕获 Objective-C 错误?

在 C 中从命令行创建数组

c++ - 任务管理器的精确度如何?

ios - 单击按钮时如何设置 TextView 的打开和关闭?

C - 使用 Controller 函数的 Pthreads

c++ - 理解指针的使用

Linux下造成内存泄漏

c - printf 输出垃圾而不是特定字符