iOS之深入解析数组遍历的底层原理和性能分析
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析数组遍历的底层原理和性能分析
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、OC 數(shù)組的類(lèi)體系
- 當(dāng)我們創(chuàng)建一個(gè) NSArray 對(duì)象時(shí),實(shí)際上得到的是 NSArray 的子類(lèi) __NSArrayI 對(duì)象。同樣的,創(chuàng)建 NSMutableArray 對(duì)象,得到的同樣是其子類(lèi) __NSArray 對(duì)象。
- 有趣的是,當(dāng)我們創(chuàng)建只有一個(gè)對(duì)象的 NSArray 時(shí),得到的是__NSSingleObjectArrayI 類(lèi)對(duì)象。
- __NSArrayI 和 __NSArrayM,__NSSingleObjectArrayI 為框架隱藏的類(lèi)。
- OC 數(shù)組的類(lèi)體系如下:
- 通過(guò) NSArray 和 NSMutableArray 接口,返回的卻是子類(lèi)對(duì)象,這是怎么回事呢?
- NSArray 重寫(xiě)了+ (id)allocWithZone:(struct _NSZone *)zone方法,在方法內(nèi)部,如果調(diào)用類(lèi)為 NSArray 則直接返回全局變量 ___immutablePlaceholderArray,如果調(diào)用類(lèi)為 NSMUtableArray 則直接返回全局變量 ___mutablePlaceholderArray。
也就是調(diào)用 [NSArray alloc] 或者 [NSMUtableArray alloc] 得到的僅僅是兩個(gè)占位指針,類(lèi)型為_(kāi)_NSPlaceholderArray。 <
- NSArray 重寫(xiě)了+ (id)allocWithZone:(struct _NSZone *)zone方法,在方法內(nèi)部,如果調(diào)用類(lèi)為 NSArray 則直接返回全局變量 ___immutablePlaceholderArray,如果調(diào)用類(lèi)為 NSMUtableArray 則直接返回全局變量 ___mutablePlaceholderArray。
總結(jié)
以上是生活随笔為你收集整理的iOS之深入解析数组遍历的底层原理和性能分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Metal之实现视频采集与实时渲染
- 下一篇: iOS经典面试题之深入分析“内存平移”的