• [OC Foundation框架


     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:@"anil, @"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];
     
     
     
  • 相关阅读:
    Python—字符编码转换、函数基本操作
    零散知识点
    Python—集合的操作、文件的操作
    Python—字典的操作
    Python—字符串的操作
    Spring基础—— 在 Spring Config 中使用外部属性文件
    Spring基础—— Bean 的作用域
    Spring基础——在 IOC 容器中 Bean 之间的关系
    Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
    Spring基础——一个简单的例子
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4119404.html
Copyright © 2020-2023  润新知