Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1658592
  • 博文数量: 174
  • 博客积分: 5493
  • 博客等级: 上校
  • 技术积分: 5802
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-05 15:13
个人简介

炼狱,是为追逐光芒

文章分类

全部博文(174)

文章存档

2017年(1)

2016年(3)

2015年(9)

2014年(5)

2013年(23)

2012年(56)

2011年(45)

2010年(32)

分类: iOS平台

2013-09-30 22:48:48

创建类

数组类只能装OC对象,不能装C基本类型

当把一个对象加入一个数组时,这个对象引用计数会加1

数组被销毁时,会对内部的所有元素都做一次release操作
#pragma mark 创建一个数组

点击(此处)折叠或打开


  1. void arrayCreate() {
  2.     // 创建一个空的数组
  3.     NSArray *array = [NSArray array];
  4.     
  5.     // 创建有1个元素的数组
  6.     array = [NSArray arrayWithObject:@"123"];
  7.     
  8.     // 创建有多个元素的数组
  9.     array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
  10.     
  11.     int count = [array count];
  12.     // count = array.count;
  13.     NSLog(@"%i", count);
  14. }
#pragma mark 数组的简单使用

点击(此处)折叠或打开

  1. void arrayUse() {
  2.     NSObject *obj = [[NSObject alloc] init];
  3.     NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c" , obj, nil];
  4.     // 判断是否包含了某个元素
  5.     if ([array containsObject:@"a"]) {
  6.         NSLog(@"包含了字符串a");
  7.     }
  8.     
  9.     NSString *last = [array lastObject];
  10.     NSLog(@"last=%@", last);
  11.     
  12.     NSString *str = [array objectAtIndex:1];
  13.     NSLog(@"%@", str);
  14.     
  15.     int index = [array indexOfObject:@"c"];
  16.     NSLog(@"index=%i", index);
  17.     
  18.     [obj release];
  19. }

#pragma mark 数组的内存管理

点击(此处)折叠或打开

  1. void arrayMemory() {
  2.     // 1
  3.     Student *stu1 = [[Student alloc] init];
  4.     Student *stu2 = [[Student alloc] init];
  5.     Student *stu3 = [[Student alloc] init];
  6.     
  7.     NSLog(@"stu1:%zi", [stu1 retainCount]);
  8.     
  9.     // 当把一个对象塞进数组中时,这个对象的计数器会加1,也就是说数组会对它做一次retain操作
  10.     // 2
  11.     NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];
  12.     
  13.     NSLog(@"stu1:%zi", [stu1 retainCount]);
  14.     
  15.     NSLog(@"count=%zi", array.count);
  16.     
  17.     // 1
  18.     [stu1 release];
  19.     [stu2 release];
  20.     [stu3 release];
  21.     
  22.     // 数组被销毁的时候,会对内部的所有元素都做一次release操作
  23.     // 0
  24.     [array release];
  25. }

#pragma mark 给数组里面的元素发送消息

点击(此处)折叠或打开


  1. void arrayMessage() {
  2.     Student *stu1 = [Student student];
  3.     Student *stu2 = [Student student];
  4.     Student *stu3 = [Student student];
  5.     
  6.     NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, nil];
  7.     // 让数组里面的所有对象都调用test方法
  8.     // [array makeObjectsPerformSelector:@selector(test)];
  9.     [array makeObjectsPerformSelector:@selector(test2:) withObject:@"123"];
  10. }

#pragma mark 遍历数组1

点击(此处)折叠或打开

  1. void arrayFor1() {
  2.     Student *stu1 = [Student student];
  3.     NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
  4.     int count = array.count;
  5.     for (int i = 0; i<count; i++) {
  6.         // id == void *
  7.         id obj = [array objectAtIndex:i];
  8.         NSLog(@"%i-%@", i, obj);
  9.     }
  10. }

#pragma mark 遍历数组2

点击(此处)折叠或打开

  1. void arrayFor2() {
  2.     Student *stu1 = [Student student];
  3.     NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
  4.     // 快速遍历
  5.     int i =0;
  6.     for (id obj in array) {
  7.         NSLog(@"%i-%@", i, obj);
  8.         i++;
  9.     }
  10. }

#pragma mark 遍历数组3

点击(此处)折叠或打开


  1. void arrayFor3() {
  2.     Student *stu1 = [Student student];
  3.     NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
  4.     [array enumerateObjectsUsingBlock:
  5.      ^(id obj, NSUInteger idx, BOOL *stop) {
  6.         NSLog(@"%zi-%@", idx, obj);
  7.          
  8.          // 如果索引为1,就停止遍历
  9.          if (idx == 1) {
  10.              // 利用指针修改外面BOOL变量的值
  11.              *stop = YES;
  12.          }
  13.     }];
  14. }

#pragma mark 遍历数组4

点击(此处)折叠或打开

  1. void arrayFor4() {
  2.     Student *stu1 = [Student student];
  3.     NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];
  4.     
  5.     // 获取数组的迭代器
  6.     // NSEnumerator *enumerator = [array objectEnumerator];
  7.     // 反序迭代器(从尾部开始遍历元素)
  8.     NSEnumerator *enumerator = [array reverseObjectEnumerator];
  9.     
  10.     // allObjects是取出没有被遍历过的对象
  11.     NSArray *array2 = [enumerator allObjects];
  12.     NSLog(@"array2:%@", array2);
  13.     
  14.     // 获取下一个需要遍历的元素
  15.     id obj = nil;
  16.     while (obj = [enumerator nextObject]) {
  17.         NSLog(@"obj=%@", obj);
  18.     }
  19. }

NSMutArray:
创建

点击(此处)折叠或打开


  1. void arrayCreate() {
  2.     NSMutableArray *array = [NSMutableArray arrayWithObject:@"1"];
  3.     // 添加元素
  4.     [array addObject:@"2"];
  5.     [array addObject:@"3"];
  6.     
  7.     // [array removeObject:@"2"];
  8.     // [array removeLastObject];
  9.     [array removeAllObjects];
  10.     
  11.     NSLog(@"%@", array);
  12. }
内存管理

点击(此处)折叠或打开

  1. void arrayMemory() {
  2.     NSMutableArray *array = [[NSMutableArray alloc] init];
  3.     // stu1:1
  4.     Student *stu1 = [[Student alloc] init];
  5.     stu1.age = 10;
  6.     // stu2:1
  7.     Student *stu2 = [[Student alloc] init];
  8.     stu2.age = 20;
  9.     
  10.     // 对被添加的元素做一次retain操作,计数器+1
  11.    [array addObject:stu1]; // stu1:2
  12.    [array addObject:stu2]; // stu2:2
  13.     
  14.    NSLog(@"add->stu1:%zi", [stu1 retainCount]);
  15.     
  16.     // 对被删除的元素做一次release操作,计数器-1
  17.     [array removeObject:stu1]; // stu1:1
  18.     
  19.     NSLog(@"remove->stu1:%zi", [stu1 retainCount]);
  20.     
  21.     // 释放学生
  22.     [stu1 release]; // stu1:0
  23.     [stu2 release]; // stu2:1
  24.     
  25.     // 当数组被释放的时候,会对所有的元素都做一次release操作
  26.     [array release]; // stu2:0
  27. }
替换:

点击(此处)折叠或打开

  1. void arrayReplace() {
  2.     NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", nil];
  3.     
  4.     [array replaceObjectAtIndex:1 withObject:@"4"];
  5.     
  6.     NSLog(@"%@", array);
  7. }

排序:

点击(此处)折叠或打开

  1. void arraySort() {
  2.     NSMutableArray *array = [NSMutableArray arrayWithObjects:@"1", @"3", @"2", nil];
  3.     
  4.     [array sortUsingSelector:@selector(compare:)];
  5.     
  6.     NSLog(@"%@", array);
  7. }



阅读(2647) | 评论(0) | 转发(0) |
0

上一篇:OC语法--NSString对象

下一篇:OC语法--字典类

给主人留下些什么吧!~~