NSPointerArray
类似于数组的集合,但具有更广泛的可用内存语义;继承自NSObject;NSPointerArray具有以下特点:
- 与NSMutableArray一样,使用下标有序的插入或移除元素,且可修改数组内容;
- 可以插入或删除nil,并且 nil 参与 count 的计算;
- count 可以 set,如果直接 set count,那么会使用 nil 占位;
- 可以使用 weak 来修饰成员;
- 成员可以是所有指针类型;
- 遵循 NSFastEnumeration,可以通过 for...in 来进行遍历。
创建和初始化新的指针数组
// 根据指定选项返回新指针数组
NSPointerArray *pointerArray = [[NSPointerArray alloc]initWithOptions:NSPointerFunctionsStrongMemory];
NSPointerFunctions *functions = [[NSPointerFunctions alloc]initWithOptions:NSPointerFunctionsStrongMemory];
// 根据指定函数返回新指针数组
NSPointerArray *pointerArray1 = [[NSPointerArray alloc]initWithPointerFunctions:functions];
// 返回一个强引用元素的数组
NSPointerArray *pointerArray2 = [NSPointerArray strongObjectsPointerArray];
// 返回一个弱引用元素的数组
NSPointerArray *pointerArray3 = [NSPointerArray weakObjectsPointerArray];
管理集合
// 设置数组元素数量
pointerArray.count = 5;
// 数组中元素数量
NSUInteger count = [pointerArray count];//5
// 数组中所有对象
[pointerArray allObjects];
// 指定索引处的指针
void *point = [pointerArray pointerAtIndex:0];//nil
// 数组中添加指针对象
[pointerArray addPointer:@"2"];//(2)
// 移除指定索引处的元素
[pointerArray removePointerAtIndex:0];//(2)
// 指定索引出插入元素
[pointerArray insertPointer:@"1" atIndex:0];//(1,2)
// 替换指定索引处的对象
[pointerArray replacePointerAtIndex:0 withPointer:@"2"];//(2,2)
// 删除数组中的nil值
[pointerArray compact];
// 获取数组的功能项
NSPointerFunctions *Functions = [pointerArray pointerFunctions];
优秀文章