OC之【NSArray使用】

原创 2013年12月01日 20:43:51

#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;

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS复习OC语言 NSString与NSArray 使用

@implementation ViewController - (void)viewDidLoad {     [super viewDidLoad]; //    ...
  • ridxmc
  • ridxmc
  • 2016年06月03日 13:11
  • 519

进击的KFC:OC(四)NSString、NSArray、NSNumber、使用苹果帮助文档、值对象

⼀、使⽤苹果帮助⽂档 苹果每次iOS版本的升级,都会添加或更新⼤量API,并提供相应的 参考⽂档。 开发者很难记忆所有的API。学会使⽤苹果帮助⽂档是开发者的⼀项技能。 打开帮助⽂档: Xco...

OC学习_第四天 NSString、NSArray、NSNumber、使用苹果帮助文档、值对象

1.使用苹果帮助文档 苹果每次iOS版本的升级,都会添加或更新⼤量API,并提供相应的参考⽂档。开发者很难记忆所有的API。学会使⽤苹果帮助⽂档是开发者的⼀项很重要的技能. 在Xcode中打开参考...

黑马程序员——OC语言加强---NSArray 的介绍和基本使用

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- NSArray 的介绍和基本使用 1、NSArray的基本介绍 1)什么是NSA...

OC代码5_NSArray

  • 2015年06月02日 15:34
  • 426B
  • 下载

OC学习之道:OC对象,字符串和数组的使用方法NSString,NSMutableString ,NSArray,NSMutableArray

OC学习之道:OC对象,字符串和数组的使用方法NSString,NSMutableString ,NSArray,NSMutableArrayint main(int argc, const c...

iOS OC(四) 字符串NSString 可变数组NSMutableArray 不可变数组NSArray 数值对象类NSNumber NSValue 数值对象类NSNumber

OC(四) 字符串NSString 可变数组NSMutableArray 不可变数组NSArray 数值对象类NSNumber NSValue 数值对象类NSNumber...

《ios_OC》字符串NSString,数组NSArray,NSNumber数值与字符串的转换

一:字符串NSString (一)不可变字符串NSString:增删查改的实现:     // c语言中字符串是由char(ASCII)字符组成         char sex='1';      ...

黑马程序员--OC学习篇之Foundation框架中的NSArray对象和NSMutableArray对象

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、NSArray类 [objc] view plaincopy...
  • kkii180
  • kkii180
  • 2015年08月25日 17:21
  • 290

OC NSSet、NSMutableSet、NSArray、NSMutableArray

不可变长度的Set @interface NSSet : NSObject   初始化方法 + (instancetype)set; //声明一个空集 + (instancetype)setWithO...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC之【NSArray使用】
举报原因:
原因补充:

(最多只允许输入30个字)