面试题答案
一键面试NSArray的初始化方式:
- 使用数组常量初始化:
NSArray *array1 = @[@"element1", @"element2", @"element3"];
这种方式简洁明了,适用于在代码中直接定义固定内容的数组。 2. 通过构造方法初始化:
NSArray *array2 = [NSArray arrayWithObjects:@"element1", @"element2", nil];
此方法可以逐个添加对象,以nil
作为结束标识,相对灵活,可在运行时动态确定数组元素。
NSArray底层存储要点:
- 数据结构:NSArray在底层通常使用一种类似C语言数组的数据结构来存储对象指针。它是有序的,每个元素在数组中有固定的位置。这种结构使得通过索引访问元素的时间复杂度为O(1),效率较高。
- 内存管理:
- NSArray本身不负责管理其存储对象的内存分配。当对象加入到NSArray中时,数组会对对象进行一次
retain
操作(在ARC环境下,实际是增加对象的引用计数)。 - 当对象从数组中移除或者数组被销毁时,数组会对对象进行一次
release
操作(在ARC环境下,减少对象的引用计数)。这样确保了只要对象在数组中,其引用计数足够使其不会被提前释放,而当对象不再被数组持有,数组会协助释放该对象的占用内存。
- NSArray本身不负责管理其存储对象的内存分配。当对象加入到NSArray中时,数组会对对象进行一次