关闭

OC之【NSArray使用】

标签: nsarrayobjective-cios开发
688人阅读 评论(0) 收藏 举报
分类:

#import <Foundation/Foundation.h>

#import "Student.h"


#pragma mark 创建一个数组

void arrayCreate() {

    // 创建一个空的数组

    NSArray *array = [NSArray array];

    

    // 创建有1个元素的数组

    array = [NSArray arrayWithObject:@"123"];

    

    // 创建有多个元素的数组

    array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

    

    int count = [array count];

    // count = array.count;

    NSLog(@"%i", count);

}


#pragma mark 数组的简单使用

void arrayUse() {

    NSObject *obj = [[NSObject alloc] init];

    NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c" , obj, nil];

    // 判断是否包含了某个元素

    if ([array containsObject:@"a"]) {

        NSLog(@"包含了字符串a");

    }

    

    NSString *last = [array lastObject];

    NSLog(@"last=%@", last);

    

    NSString *str = [array objectAtIndex:1];

    NSLog(@"%@", str);

    

    int index = [array indexOfObject:@"c"];

    NSLog(@"index=%i", index);

    

    [obj release];

}


#pragma mark 数组的内存管理

void arrayMemory() {

    // 1

    Student *stu1 = [[Student alloc] init];

    Student *stu2 = [[Student alloc] init];

    Student *stu3 = [[Student alloc] init];

    

    NSLog(@"stu1:%zi", [stu1 retainCount]);

    

    // 当把一个对象塞进数组中时,这个对象的计数器会加1,也就是说数组会对它做一次retain操作

    // 2

    NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];

    

    NSLog(@"stu1:%zi", [stu1 retainCount]);

    

    NSLog(@"count=%zi", array.count);

    

    // 1

    [stu1 release];

    [stu2 release];

    [stu3 release];

    

    // 数组被销毁的时候,会对内部的所有元素都做一次release操作

    // 0

    [array release];

}


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

void arrayMessage() {

    Student *stu1 = [Student student];

    Student *stu2 = [Student student];

    Student *stu3 = [Student student];

    

    NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, nil];

    // 让数组里面的所有对象都调用test方法

    // [array makeObjectsPerformSelector:@selector(test)];

    [array makeObjectsPerformSelector:@selector(test2:) withObject:@"123"];

}


#pragma mark 遍历数组1

void arrayFor1() {

    Student *stu1 = [Student student];

    NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];

    int count = array.count;

    for (int i = 0; i<count; i++) {

        // id == void *

        id obj = [array objectAtIndex:i];

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

    }

}


#pragma mark 遍历数组2

void arrayFor2() {

    Student *stu1 = [Student student];

    NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];

    // 快速遍历

    int i =0;

    for (id obj in array) {

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

        i++;

    }

}


#pragma mark 遍历数组3

void arrayFor3() {

    Student *stu1 = [Student student];

    NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];

    [array enumerateObjectsUsingBlock:

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

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

         

         // 如果索引为1,就停止遍历

         if (idx == 1) {

             // 利用指针修改外面BOOL变量的值

             *stop = YES;

         }

    }];

}


#pragma mark 遍历数组4

void arrayFor4() {

    Student *stu1 = [Student student];

    NSArray *array = [NSArray arrayWithObjects:stu1, @"1", @"2", @"3", nil];

    

    // 获取数组的迭代器

    // NSEnumerator *enumerator = [array objectEnumerator];

    // 反序迭代器(从尾部开始遍历元素)

    NSEnumerator *enumerator = [array reverseObjectEnumerator];

    

    // allObjects是取出没有被遍历过的对象

    NSArray *array2 = [enumerator allObjects];

    NSLog(@"array2:%@", array2);

    

    // 获取下一个需要遍历的元素

    id obj = nil;

    while (obj = [enumerator nextObject]) {

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

    }

}


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

{


    @autoreleasepool {

        arrayFor4();

    }

    return 0;

}



0
0

猜你在找
【直播】计算机视觉原理及实战—屈教授
【套餐】深度学习入门视频课程—唐宇迪
【套餐】Hadoop生态系统零基础入门--侯勇蛟
【套餐】嵌入式Linux C编程基础--朱有鹏
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:614366次
    • 积分:9219
    • 等级:
    • 排名:第1983名
    • 原创:272篇
    • 转载:235篇
    • 译文:14篇
    • 评论:31条
    博客专栏
    最新评论