OC-NSArray和数组

数组里面只能存放对象 不能存放基础数据类型
不能存放nil nil被用于标志数组的结束

初始化

NSArray *array = [NSMutableArray array];
NSArray *array = [NSArray arrayWithObjects:@“123”,@2,@“wf”];

[NSNull null]空对象

NSArray *array = [NSArray arrayWithObjects:[NSNull null],[NSNull null],[NSNull null],nil];
NSLog(@“%@”,array);//“”,“”,“”

[array addObject:@“1”];

[array addObjectsFromArray:@[@“2”,@“3”]];]

插入

[array insertObject:@“0” atIndex:0];

删除指定对象
[array removeObject:@“2”];
删除最后一项
[array removeLastObject];
删除指定索引下的对象
[array removeObjectAtIndex:1];
删除子数组
[array removeObjectsInArray:@[@“0”,@“1”]];
根据索引替换数组中的对象
[array replaceObjectAtIndex:1 withObject:@“a”];
交换两个索引下的对象
[array exchangeObjectAtIndex:0 withObjectAtIndex:2];
覆盖元数组
[array setArray:@[@“a”,@“b”,@“c”]];//等于原来的数组就不存在了 换了一个新的数组

枚举类型

这种只能选一个
typedef NS-ENUM(NSUInteger,CustomType)
{
ONE,
TWO,
THREE,
};
这种可以多选
typedef NS-OPTIONS(NSUInteger,CustomType)
{
ONE =0,
TWO =1<<0,//1
THREE =1<<1,//2 因为这样枚举所以多选并不会覆盖上一次选择
};
多选的时候用|连接 比如ONE|TWO

常用方法

获取数组中第一位元素
array.firstObject
获取数组最后一位元素
array.lastObject
获取数组中指定索引下标
array[1]
判断数组中是否包含某项
-(BOOL)contatinsObject:(ObjectType)anObject;
如果要判断自己定义的就需要重写类 -(BOOL)isEqual:(id)object
数组枚举
for(NSString *string in array)
{
NSLog(@“%@”,string);
}
给数组里的每一个对象都发送一个消息
[array makeObjectsPerformSelector:@selector(test)];
根据对象返回索引值
[array indexOfObject:@“c”];
不可变数组后追加对象
[array arrayByAddingObject:@"“d”];

排序

sortedArrayUsingSelector

给自定义对象的数组排序
[array sortedArrayUsingSelector:@selector(compareAge:)]//这个compareAge方法需要声明和实现

sortedArrayUsingComparator 通过block自定义对象的数组排序

具体自己去查了

数组

id objs[20];

初始化数组

array = (id __strong *)calloc(entries,sizeof(id));//因为calloc会自动初始化为0
//如果用malloc就需要用memset将内存填充为0

//如果这样用 是很危险的
array = (id __strong *)malloc(sizeof(id)*entries);
for(NSUInteger i = 0;i<entries;++i)
	array[i] = nil;
//这是因为由malloc韩素分配的内存区域并不会被自动初始化为0 此时再通过array[i] = nil; nil会被复制给附有__strong修饰符的病被复制了随机地址的变量中 从而释放一个不存在的对象

释放数组

for (NSUInteger i = 0;i<entries;i++)
{
array[i] = nil;
}
free(array);
先将元素都赋值为nil使强引用失效 在用free释放内存块

数组修饰符

__weak,__autorealsing,__unsafe_unretained,__strong
//除__unsafe_unretained修饰符以外的都是将数组内初始化为nil
id __weak objs1[4];
id objs[2];
objs[0] = [[NSObject alloc]init];
objs[1] = [NSMutableArray array];

默认类型

正常默认情况 id a[4];__strong类型
但是id *a[4]默认为 id __autoreleasing* 类型

containsObject

判断集合中是否存在与指定对象相等的对象
containsObject: 方法是通过对象的 isEqual: 方法来进行比较的。因此,对于自定义对象,需要正确实现 isEqual: 方法以确保比较的准确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值