2015.04.23(Objective _c---NSArray和NSMutableArray)

一、NSArray


#import <Foundation/Foundation.h>

#import "Person.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        /*

         NSString NSArray NSDictionary

         */

        // int a[10] = {0,1,2,3...};

        // arr1数组对象

        __unused NSArray *arr1 = @[@"0",@"1",@"2"];

        __unused NSArray *arr2 = [NSArray arrayWithObjects:@"0",@"1",@"2", nil];

        // 元素只要是 id类型即可 arr3数组中有两个元素 这两个元素都是数组

        __unused NSArray *arr3 = @[arr1,arr2];

        // 数组对数组进行初始化

        __unused NSArray *arr4 = [NSArray arrayWithArray:arr2];

        //NSLog(@">>%@ %@ %@ %@",arr1,arr2,arr3,arr4);

        // OC数组中不能存放基本数据类型 必须在基本数据类型前加@  才能保存

        // NSString @"10" NSNumber @10

        // NSNumber 基本数据类型面向对象的封装 基本数据类型转化为NSNumber类型后转变成一个对象

        __unused NSArray *arr5 = @[@10,@1.0];

        

        __unused NSNumber *num1 = [NSNumber numberWithInt:10];

        __unused NSNumber *num2 = [NSNumber numberWithFloat:1.0];

        __unused NSNumber *num3 = [NSNumber numberWithChar:'C'];

        __unused NSNumber *num4 = [NSNumber numberWithBool:TRUE];

        

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

        // 格式化输出%@ 调用该对象的description方法 NSObject方法

        NSLog(@"%@",p);

        

        __unused NSArray * arr6 = @[arr1,@"wahaha",@10.5,p];

        //NSLog(@"%@",arr6);

        // 获取数组中元素的个数

        NSLog(@"count is %zd",arr6.count);

        // 下标直接获取数组中的对象

        id obj = arr6[0];

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

        

        // 数组越界崩溃问题

        NSInteger index = 100;

        // 防止数组越界

        if(arr6.count > index){

            __unused id obj = arr6[index];

        }

        

        // 通过索引获取数组中的元素

       __unused id obj1 = [arr6 objectAtIndex:1];

        

        // 遍历数组

        // 快速枚举

        // obj逐一指向arr6数组中的元素

        for (id obj in arr6){

            //NSLog(@"obj is %@",obj);

            // 判断对象类型

            if([obj isKindOfClass:[NSString class]]){

                NSLog(@"obj is NSString %@",obj);

            }

        }

        

        // 枚举器遍历数组

        NSEnumerator * enumer = [arr6 objectEnumerator];

        id obj2 = [enumer nextObject];

        while (obj2 == [enumer nextObject]) {

            NSLog(@"NSEnumerator is %@",obj2);

        }

    }

    return 0;

}


二、NSMutableArray


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // NSArray 不可变数组 不能被修改

        // NSMutableArray 可变数组 可被修改

        __unused NSMutableArray * arr1 = [NSMutableArray array];

        __unused NSMutableArray * arr2 = [[NSMutableArray alloc] init];

        __unused NSMutableArray * arr3 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"2",nil];

        __unused NSMutableArray * arr4 = [NSMutableArray arrayWithArray:arr3];

        

        // 添加

        

        // 向可变数组中添加元素

        NSLog(@"before arr4 %@ %zd",arr4,arr4.count);

        [arr4 addObject:@"4"];

        NSLog(@"after arr4 is %@ %zd",arr4,arr4.count);

        

        // 删除

        

        // 删除数组中的指定的元素

//        [arr4 removeObject:@"3"];

//        // 删除数组的最后一项

//        [arr4 removeLastObject];

//        // 删除数组中的所有元素

//        [arr4 removeAllObjects];

//        // 删除指定index下标的元素

//        [arr4 removeObjectAtIndex:2];

//        // 指定一个Range 将满足Range条件的对象删除

//        [arr4 removeObject:@"2" inRange:NSMakeRange(0, 2)];

//        NSLog(@"%@ %zd",arr4,arr4.count);

        

        // 修改

        // - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

        [arr4 replaceObjectAtIndex:2 withObject:@"10"];

        NSLog(@"%@",arr4);

        

        NSArray * arr5 = @[@"q",@"w",@"e"];

        // 将整个数组arr5 当成一个元素添加到arr4

        [arr4 addObject:arr5];

        // 将数组arr5中的每一个元素都添加到arr4

        [arr4 addObjectsFromArray:arr5];

        NSLog(@"arr4 is %@",arr4);

    }

    return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值