【问题标题】:NSMutableArray ImplementationNSMutableArray 实现
【发布时间】:2012-11-04 13:18:40
【问题描述】:

NSMutableArray 是如何实现的?

如果有许多 NSMutableArray 对可变数组的引用,例如源数组和这些指向数组中的每一个对对象进行不同的排序,对象是复制到每个数组中还是对象指针只是在内部重新排列?

如果源数组用新对象更新,NSMutableArray 指针是否会自动将条目添加到它们的内部引用中。

【问题讨论】:

    标签: objective-c nsmutablearray


    【解决方案1】:

    它只存储指针。这意味着如果 NSMutableArray 存储不可变对象,那么您可以确定它们不会更改其状态,但如果它具有可变对象,则任何引用对象的状态都可能随时更改。
    确切的我不知道它是怎么实现的,但我会说一个指向id的指针。它分配内存,然后在需要的索引处更新id:

    id* pointers;
    < Allocation>
    pointers[i]= newObjectPointer;
    

    【讨论】:

      【解决方案2】:

      准确解析您所询问的场景有点困难,但NS(Mutable)Array 拥有一个对象引用列表。它不会复制您添加到其中的对象,只是保留一个指针。如果这些对象可以更改,并且您从数组外部更改它们,那将反映在您从数组中读回的内容中。

      NSMutableArray * arr = [NSMutableArray array];
      NSMutableArray * child = [NSMutableArray array];
      [child addObject:@5];
      [arr addObject:child];
      [child addObject:@6];
      NSLog(@"%@", arr[0]);
      > [5, 6] 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-20
        • 1970-01-01
        相关资源
        最近更新 更多