nsarray 释放_iOS-NSArray用法大全详细说明

释放双眼,带上耳机,听听看~!

+ (void)NSArrayCreateMethod

{

// 如果用这种格式,最后不用加nil!

NSArray *array = @[@"one", @"two", @"three"];

NSLog(@"array = %@",array);

QFDog *xiaoBai = [[QFDog alloc] init];

QFDog *xiaoHei = [[QFDog alloc] init];

NSArray *array1 = @[@"one", array, @"two", xiaoBai, xiaoHei];

// 打印数组的时候,NSArray的description方法,是遍历这个数组,对数组里的每个对象,调用他这个对象的description方法。

NSLog(@"array1 = %@",array1);

// 用多个对象,来初始化array2数组 (注意,数组以nil结尾)

NSArray *array2 = [[NSArray alloc] initWithObjects:array, array1, @"one", xiaoBai, nil];

NSLog(@"array2 = %@",array2);

// 对应的加方法, 用多个对象来创建array3

NSArray *array3 = [NSArray arrayWithObjects:@"one", @"two", xiaoBai, xiaoHei, nil];

NSLog(@"array3 = %@",array3);

// 用一个array3数组元素的内容,来初始化array4

NSArray *array4 = [[NSArray alloc] initWithArray:array3];

NSLog(@"array4 = %@",array4);

// 对应的加方法,用array4数组元素的内容,来创建array5

NSArray *array5 = [NSArray arrayWithArray:array4];

NSLog(@"array5 = %@",array5);

// 要注意和如下方法的区别,用array4这个对象,来创建一个array6.

NSArray *array6 = [NSArray arrayWithObject:array4];

NSLog(@"array6 = %@",array6);

}

// NSString, NSArray, NSDictionary 都是由类簇实现的,都不能被继承。

+ (void)NSArraySimpleMethod

{

NSArray *array = @[@"one", @"two", @"three", @"four", @"three"];

// 返回数组元素的个数。

NSLog(@"count1 = %lu",[array count]);

NSArray *array1 = [NSArray arrayWithObjects:@"one", @"two", array, @"four", @"five", @"six", nil];

// nil并不是数组里的元素。

NSLog(@"count2 = %lu",[array1 count]);

// 遍历数组里所有的元素 (类似于C的数组方式)

for (int i=0; i

NSLog(@"array[%d] = %@", i, array1[i]);

}

// 也可以用如下方法取,就等价于array1[3];

// 根据下标,获取数组中得元素

NSString *str = [array1 objectAtIndex:3];

NSLog(@"str = %@",str);

// 注意,数组不能越界访问! (nil 并不是数组的元素)

// str = [array1 objectAtIndex:[array1 count]];

// NSIndexSet 是一个数字的集合类 (里面装的是数字的集合)

// 通过一个range创建一个数字集合, 这个集合有(1,2,3,4)四个数字。

//字符串的截取

NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(1, 4)];

// 根据一个数字集合,返回一个数组。 (获取子数组)

NSArray *subArray = [array1 objectsAtIndexes:indexSet];

NSLog(@"subArray = %@",subArray);

// 根据对象,返回在数组里的索引(数组里存在的第一个索引)

NSLog(@"%lu",[array indexOfObject:@"three"]);

// 根据对象,返回一个range范围内对应的数组的索引

NSLog(@"%lu",[array indexOfObject:@"three" inRange:NSMakeRange(3, 2)]);

// 如果找不到,返回NSNotFound

if ([array indexOfObject:@"123"] == NSNotFound) {

NSLog(@"没有找到");

}

// 将字符串分割成一个数组(字符集合, 字符串)

// 注意,我们分割出来的是不可变数组

// @"" @"Don't" @"" @"trouble" @"" @"trouble" @"" @"or" @"trouble" @"trouble" @"you" @"" @""

NSString *string = @" Don't trouble trouble, or trouble trouble you! ";

// NSCharacterSet 是一个字符集合,这个方法是用一个字符串的字符,来创建一个字符集合。

NSCharacterSet *cs = [NSCharacterSet characterSetWithCharactersInString:@", !"];

NSArray *array2 = [string componentsSeparatedByCharactersInSet:cs];

NSLog(@"array2 = %@",array2);

// 剔除空串 NSMutableArray的时候说。

NSString *string1 = @"Give you some color see see";

// 以字符串整体作为分割条件

NSArray *array3 = [string1 componentsSeparatedByString:@" "];

NSLog(@"array3 = %@",array3);

// 将一个字符串的数组,拼接成一个字符串

NSString *string2 = [array3 componentsJoinedByString:@"-"];

NSLog(@"string2 = %@",string2);

NSLog(@"%@",[array2 componentsJoinedByString:@"-"]);

// 数组的枚举,快速枚举

// 枚举器 NSEnumerator

// 数组的方法,创建一个枚举器 (正序的枚举器)

NSEnumerator *e = [array3 objectEnumerator];

// 这个地方,最好写成id obj; 但是因为我们明确知道,这个数组里装的都是字符串,我们也可以写成NSString *obj;

NSString *obj = nil;

// e nextObject 这个方法,会将数组的元素,依次取出,赋值给obj, 直到最后返回nil给obj, 退出循环。

while (obj = [e nextObject]) {

NSLog(@"obj = %@",obj);

}

NSLog(@"---------------");

// 创建一个反序的枚举器

e = [array3 reverseObjectEnumerator];

while (obj = [e nextObject]) {

NSLog(@"obj = %@",obj);

}

// 快速枚举 (用的非常多,非常方便)

// id obj, 相当于定义了一个id类型的obj语句块变量

// for (int i=0; i<....>

// 将array1里的元素,依次赋值给obj,直到nil结束。

for (id obj in array1) {

NSLog(@"obj = %@",obj);

// [NSArray class] 这个方法返回的就是NSArray类的名字。

// NSClassFromString(@"NSArray") 根据字符串返回一个类的名字,返回的就是NSArray

// isMemberOfClass, 是判断obj是否为[NSArray class]类的对象。

// [obj isMemberOfClass:[NSArray class]]

// isKindOfClass, 判断obj是否为NSArray类,或者其子类的对象。

// if ([obj isKindOfClass:[NSArray class]]) {

// if ([obj isKindOfClass:NSClassFromString(@"NSArray")]) {

// continue;

// }

// if ([obj isEqualToString:@"four"]) {

// break;

// }

}

NSLog(@"--------");

// 通过for循环也可以,for循环除了i++,还能i+=2,但是快速枚举,枚举器是无法做到的!

for (int i=0; i

// id obj = [array objectAtIndex:i];

id obj = array[i];

NSLog(@"obj = %@",obj);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值