[OC Foundation框架 - 7] NSArray的创建与遍历

NSArray是不可变的,不能先创建再添加元素

NSArray可以放入任何OC对象,但不能放入基本数据类型、结构体、枚举等非OC对象

不能存储nil

A.常用方法1

  1. 创建
  2. 返回用量
  3. 是否含有某元素
  4. 最后的元素
  5. 取得某位置的元素

当一个对象放入数组的时候,这个对象的计数器加1

 1 #pragma mark create a array
 2 void arrayCreate()
 3 {
 4     //Create an empty array
 5     NSArray *array = [NSArray array];
 6
 7     //Create an array with one element
 8     array = [NSArray arrayWithObject:@"123"];
 9
10     array = [NSArray arrayWithObjects:@"a", @"b", @"d", nil];
11
12     NSUInteger count =[array count];
13     NSLog(@"%@", count);
14
15     [array release];
16 }

最后的nil用作标示数组的结束,不会被存储进数组元素,不允许在其他地方插入

error:    array = [NSArray arrayWithObjects:@"a”, nil, @"d"];

 1 #pragma mark common use
 2 void arrayUser()
 3 {
 4     NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
 5     if ([array containsObject:@"a"])
 6     {
 7         NSLog(@"Contans a");
 8     }
 9
10     NSString *last = [array lastObject];
11     NSLog(@"%@", last);
12
13     NSString *str = [array objectAtIndex:1];
14     NSLog(@"%@", str);
15
16     NSUInteger location = [array indexOfObject:@"c"];
17     NSLog(@"%@", location);
18
19     [array release];
20 }
21
22 #pragma memory manage
23 void memoryManage()
24 {
25     Student *stu1 = [[Student alloc] init];
26     Student *stu2 = [[Student alloc] init];
27     Student *stu3 = [[Student alloc] init];
28
29     NSLog(@"stu1: %zi", [stu1 retainCount]);
30
31     NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];
32
33     NSLog(@"stu1: %zi", [stu1 retainCount]);
34
35     [stu1 release];
36     [stu2 release];
37     [stu3 release];
38
39     [array release];
40
41 }

B.常用方法2

1.给数组所有元素发送消息,调用同一个方法

 1 void arrayMessage()
 2 {
 3     Student *stu1 = [[Student alloc] init];
 4     Student *stu2 = [[Student alloc] init];
 5     Student *stu3 = [[Student alloc] init];
 6
 7     NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];
 8
 9     [array makeObjectsPerformSelector:@selector(test2:) withObject:@"test2"];
10
11     [stu1 release];
12     [stu2 release];
13     [stu3 release];
14
15     [array release];
16 } 

2.遍历

(1)for 循坏

 1 void arrayLoop()
 2 {
 3     Student *stu = [[Student alloc]init];
 4     NSArray *array = [[NSArray alloc] initWithObjects:stu, @"2", @"3", nil];
 5     unsigned long count = array.count;
 6 //    for (int i=0; i<count; i++)
 7 //    {
 8 //        id obj = [array objectAtIndex:i];
 9 //        NSLog(@"%i - %@", i, obj);
10 //    }
11
12     int i = 0;
13     for (id obj in array)
14     {
15         NSLog(@"%i - %@", i, obj);
16         i++;
17     }
18
19     [stu release];
20     [array release];
21 }

(2)使用Block进行循环处理

 1 void arrayLoopByBlock()
 2 {
 3     Student *stu = [[Student alloc]init];
 4     NSArray *array = [[NSArray alloc] initWithObjects:stu, @"2", @"3", nil];
 5
 6
 7     [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
 8         NSLog(@"%zi - %@", idx, obj);
 9         if (idx == 1)
10         {
11             *stop = YES;
12         }
13     }];
14
15     [stu release];
16     [array release];
17 }

(3).迭代器

 1 void arrayLoopByEnumerator()
 2 {
 3     Student *stu = [[Student alloc]init];
 4     NSArray *array = [[NSArray alloc] initWithObjects:stu, @"2", @"3", nil];
 5
 6 //    NSEnumerator *e = [array objectEnumerator];
 7     NSEnumerator *e = [array reverseObjectEnumerator];
 8     id obj = nil;
 9     while (obj = [e nextObject])
10     {
11         NSLog(@"The element is %@", obj);
12     }
13
14     [stu release];
15     [array release];
16 }

创建整数数组

(1)

1      NSArray *array61 = [NSArray arrayWithObjects:@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, nil];

实际上是把数字自动转化成了NSNumber类型

(2)不能用于NSMutableArray

1 NSArray *array61 = @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9];
时间: 2024-11-07 12:30:34

[OC Foundation框架 - 7] NSArray的创建与遍历的相关文章

[OC Foundation框架 - 8] NSArray排序

1.派生 1 voidarrayNew() 2 { 3 NSArray*array = [NSArrayarrayWithObjects:@"1",@"2",nil]; 4 NSArray*array2 = [arrayarrayByAddingObject:@"3"]; 5 NSLog(@"%@", array2); 6 7 8 NSArray*array4 = [NSArrayarrayWithObjects:@"

[OC Foundation框架 - 2] NSString 的创建

A. 不可变字符串 1 void stringCreate() 2 { 3 //Don't need to release memory by this way 4 NSString *str1 = @"String Sample"; 5 6 NSString *str2 = [[NSString alloc] init]; 7 str2 = @"String sample 2"; 8 [str2 release]; 9 10 NSString *str3 = [[

OC中Foundation框架之NSArray、NSMutableArray

NSArray概述 1 NSArray是OC中的数组类 NSArray特点 1 1)只能存放任意OC对象,并且是有顺序的 2 2)不能存放非OC对象,比如int/float/double/char/enum/struct等 3 3)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素 NSArray的创建方式 1 +(instancetype)array; 2 +(instancetype)arrayWithObject:(id)anObject

OC Foundation框架—字符串

一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableArray:可变数组 2) NSSet: NSMutableSet: 3) NSDictiorary NSMutableDictiorary 其它: NSDate NSObject 二.NSString和NSMutableString的使用与注意 (一)6种创建字符串的形式 (二)使用注意 (1)字符

OC Foundation框架—集合

Foundation框架—集合 一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组. C语言数组有一个缺点即数组中只能存放同种数据类型的元素. OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等. (2)NSArray的创建 (3)NSArray的访问 (4)NSArray的遍历 数组的遍历有以下几种方式: 首先创建一个数组 第

黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类

今天我们继续来看一下Foundation框架中的NSArray类和 NSMutableArray类,NSArray类 是不可变的,NSMutableArray类是可变的. 一.NSArray类 NSArray中不可以存放基本数据类型,只能存放类的实例,如果需要将基本类型.结构体放入到数组中得话,需要通过NSNumber/NSValue进行数据的封装 同时不能在NSArray中存储nil // // main.m // 16_NSArray // // Created by waterfoxjie

OC Foundation框架—结构体

一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了. 即#import<foundation/foundation.h> 补充:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中是OC的. 二.常用的结构体介绍及简单使用 常用的结构体: (一)NSRang的基本使用 创建变量 (二)NSPo

[OC Foundation框架 - 20] 统计代码行数

注意: 1.变量名和函数名不要混淆调用 2.不要对文件夹进行文件的操作,没有权限 3.递归调用注意初始化变量 1 // 2 // main.m 3 // CodeLineCount 4 // 5 // Created by hellovoidworld on 14-11-18. 6 // Copyright (c) 2014年 com.hellovoidworld. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>

[OC Foundation框架 - 23] 文件管理

A. 目录管理 1 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 2 3 // 1.获取文件属性 4 NSString *path = @"/Users/hellovoidworld/desktop/oc/test20141121.txt"; 5 NSFileManager *manager = [NSFileManagerdefaultManager]; // 单例模式 6 NSDictionary *att