我是靠谱客的博主 标致裙子,这篇文章主要介绍iOS之深入解析数组遍历的底层原理和性能分析,现在分享给大家,希望可以做个参考。

一、OC 数组的类体系

  • 当我们创建一个 NSArray 对象时,实际上得到的是 NSArray 的子类 __NSArrayI 对象。同样的,创建 NSMutableArray 对象,得到的同样是其子类 __NSArray 对象。
  • 有趣的是,当我们创建只有一个对象的 NSArray 时,得到的是__NSSingleObjectArrayI 类对象。
  • __NSArrayI 和 __NSArrayM,__NSSingleObjectArrayI 为框架隐藏的类。
  • OC 数组的类体系如下:

在这里插入图片描述

  • 通过 NSArray 和 NSMutableArray 接口,返回的却是子类对象,这是怎么回事呢?
    • NSArray 重写了+ (id)allocWithZone:(struct _NSZone *)zone方法,在方法内部,如果调用类为 NSArray 则直接返回全局变量 ___immutablePlaceholderArray,如果调用类为 NSMUtableArray 则直接返回全局变量 ___mutablePlaceholderArray。
      也就是调用 [NSArray alloc] 或者 [NSMUtableArray alloc] 得到的仅仅是两个占位指针,类型为__NSPlaceholderArray。
    • <

最后

以上就是标致裙子最近收集整理的关于iOS之深入解析数组遍历的底层原理和性能分析的全部内容,更多相关iOS之深入解析数组遍历内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部