MST

星途 面试题库

面试题:Objective-C中NSArray的初始化方式及底层存储原理

请列举出至少两种NSArray的初始化方式,并简要说明NSArray在底层是如何存储元素的,包括数据结构和内存管理方面的要点。
23.1万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

NSArray的初始化方式:

  1. 使用数组常量初始化
NSArray *array1 = @[@"element1", @"element2", @"element3"];

这种方式简洁明了,适用于在代码中直接定义固定内容的数组。 2. 通过构造方法初始化

NSArray *array2 = [NSArray arrayWithObjects:@"element1", @"element2", nil];

此方法可以逐个添加对象,以nil作为结束标识,相对灵活,可在运行时动态确定数组元素。

NSArray底层存储要点:

  1. 数据结构:NSArray在底层通常使用一种类似C语言数组的数据结构来存储对象指针。它是有序的,每个元素在数组中有固定的位置。这种结构使得通过索引访问元素的时间复杂度为O(1),效率较高。
  2. 内存管理
    • NSArray本身不负责管理其存储对象的内存分配。当对象加入到NSArray中时,数组会对对象进行一次retain操作(在ARC环境下,实际是增加对象的引用计数)。
    • 当对象从数组中移除或者数组被销毁时,数组会对对象进行一次release操作(在ARC环境下,减少对象的引用计数)。这样确保了只要对象在数组中,其引用计数足够使其不会被提前释放,而当对象不再被数组持有,数组会协助释放该对象的占用内存。