Foundation NSArray

//

//  main.m

//  03-NSArray

//

 

#import <Foundation/Foundation.h>

#import "Person.h"

 

 

/*

 

NSArray :不可变数组

 

 

NSMutableArray : 可变数组

 */

 

int main()

{

    // @[] 只创建不可变数组NSArray

    /* 错误写法

    NSMutableArray *array = @[@"jack", @"rose"];

    

    [array addObject:@"jim"];

    */

    

    

    //NSArray *array = @[@"jack", @"rose"];

    

    return 0;

}

 

// 可变数组的基本使用

void use3()

{

    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];

    

    // 添加元素

    [array addObject:[[Person alloc] init]];

    

    [array addObject:@"jack"];

    

    // 删除元素

    //[array removeAllObjects];

    // 删除指定的对象

    // [array removeObject:@"jack"];

    [array removeObjectAtIndex:0];

    

    // 错误写法

    // [array addObject:nil];

    

    

    NSLog(@"%@", array);

    

    NSLog(@"%ld", array.count);

}

 

// 遍历数组

void use2()

{

    Person *p = [[Person alloc] init];

    

    NSArray *array = @[p, @"rose", @"jack"];

    

    //    for (int i = 0; i<array.count; i++)

    //    {

    //        NSLog(@"%@", array[i]);

    //    }

    

    // id obj代表着数组中的每一个元素

    //int i = 0;

    //    for (id obj in array)

    //    {

    //        // 找出obj元素在数组中的位置

    //        NSUInteger i = [array indexOfObject:obj];

    //

    //        NSLog(@"%ld - %@", i, obj);

    //        //i++;

    //

    //        if (i==1)

    //        {

    //            break;

    //        }

    //    }

    

    [array enumerateObjectsUsingBlock:

     

     // 每遍历到一个元素,就会调用一次block

     // 并且当前元素和索引位置当做参数传给block

     ^(id obj, NSUInteger idx, BOOL *stop)

     {

         NSLog(@"%ld - %@", idx, obj);

         

         

         if (idx == 0)

         {

             // 停止遍历

             *stop = YES;

         }

         

     }];

    

    

    //    void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)

    //    {

    //        NSLog(@"%ld - %@", idx, obj);

    //

    //

    //        if (idx == 0)

    //        {

    //            // 停止遍历

    //            *stop = YES;

    //        }

    //    };

    //

    //    for (int i = 0; i<array.count; i++)

    //    {

    //        // 用来标记是否需要停止遍历

    //        BOOL isStop = NO;

    //

    //        // 取出元素

    //        id obj = array[i];

    //        

    //        myblock(obj, i, &isStop);

    //        

    //        

    //        if (isStop)

    //        {

    //            break;

    //        }

    //    }

 

}

 

void use()

{

    /*

     int a = 5;

     

     int ages[10] = {1, 90, 89, 17};

     

     Person *p = [[Person alloc] init];

     Person *persons[5] = {p,  [[Person alloc] init]};

     */

    

    // OC数组不能存放nil值

    // OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等

    

    // 这个array永远是空数组

    // NSArray *array = [NSArray array];

    

    

    /*

     1.NSArray的创建

     */

    NSArray *array2 = [NSArray arrayWithObject:@"jack"];

    

    // nil是数组元素结束的标记

    NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];

    // [array2 count];

    

    //NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];

    

    // 快速创建一个NSArray对象

    NSArray *array4 = @[@"jack", @"rose", @"4324324"];

    

    

    /*

     2.NSArray的元素个数

     */

    NSLog(@"%ld", array3.count);

    

    

    /*

     3.NSArray中元素的访问

     */

    NSLog(@"%@", [array3 objectAtIndex:1]);

    

    //array3[1];

    NSLog(@"%@", array3[0]);

}

 

#import <Foundation/Foundation.h>

 

 

 

@interface Person : NSObject

 

 

 

@end

#import "Person.h"

 

@implementation Person

 

@end

 

posted @ 2016-03-28 12:03  lance.xiang  阅读(81)  评论(0编辑  收藏  举报