//
//  main.m
//  NSArray
//
//  Created by dingxiaowei on 13-5-12.
//  Copyright (c) 2013年 dingxiaowei. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"
void arrayCreate(){//静态创建数组,a不需要我们管理内存NSArray *array=[NSArray array];array = [NSArray arrayWithObject:@"abc"];array=[NSArray arrayWithObjects:@"d",@"e",@"f",nil];NSLog(@"%@",array);NSLog(@"数组的元素个数:%zi",[array count]);
}void arrayUse(){NSArray *obj=[[[NSArray alloc] init] autorelease];NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",obj,nil];if([array containsObject:@"a"]){NSLog(@"数组中包含了a元素");}NSLog(@"最后一个元素是:%@",[array lastObject]);NSLog(@"第2个元素是:%@",[array objectAtIndex:1]);NSLog(@"c元素的位置:%zi",[array indexOfObject:@"c"]+1);
}
#pragma mark - 数组的内存管理
void arrayMemory(){Student *stu1=[[Student alloc] init];Student *stu2=[[Student alloc] init];Student *stu3=[[Student alloc] init];NSLog(@"stu1的计数器%i",[stu1 retainCount]);//注意:将一个OC对象塞给array之后,这个对象的计数器加1NSArray *array=[[NSArray alloc] initWithObjects:stu1,stu2,stu3,nil]; //注意:将一个OC对象塞给array之后,这个对象的计数器加1NSLog(@"stu1的计数器%i",[stu1 retainCount]);NSLog(@"元素个数:%zi",array.count);[stu1 release];[stu2 release];[stu3 release];[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];//静态方法不需要我们管理内存//将array里面多有对象都调用一次test方法//[array makeObjectsPerformSelector:@selector(test)];[array makeObjectsPerformSelector:@selector(test:) withObject:@"123"];  //注意冒号也是方法名的一部分,这个顶多只支持传一个参数
}#pragma mark - 遍历数组1(基本for循环遍历)
void arrayFor1(){Student *stu1=[Student student];NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中int count=array.count; //得到数组的元素个数for(int i=0;i<count;i++){ //返回idid obj=[array objectAtIndex:i];    //id=void *NSLog(@"%->%@",i,obj);}
}
#pragma mark - 遍历数组2(快速遍历)
void arrayFor2(){Student *stu1=[Student student];NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中//快速遍历int i=0;for(id obj in array){NSLog(@"%->%@",i,obj);i++;}
}
#pragma mark - 遍历数组3(用Block遍历)
void arrayFor3(){Student *stu1=[Student student];NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中//用Block遍历[array enumerateObjectsUsingBlok:^(id obj,NSUinter idx,BOOL *stop){NSLog(@"%i-%@",idx,obj);if(idx==2){//利用指针变量修改外面BOOL的值*stop=YES;//调用指针参数   改变外面的变量   终止循环
        }}];}
#pragma mark - 遍历数组4(用迭代器遍历)
void arrayFor4(){Student *stu1=[Student student];NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中//用迭代器遍历数组//获取数组的迭代器NSEnumerator *enumerator=[array objectEnumerator];
//    //取得下一个对象
//    [enumerator nextObject];id obj=nil;if(obj=[enumerator nextObject]){NSLog(@"obj=%@",obj);}
//    //返回迭代器中所有的元素
//    [array allObjects];//注意:这个方法只能返回没由遍历过的,要使用这种方法返回所有的对象,就放在nextObject方法之前!!!NSArray * array2=[array allObjects];NSLog(@"array2:%@",array2);
}
int main(int argc, const char * argv[])
{@autoreleasepool {arrayCreate();arrayUse();arrayMemory();arrayFor1();arrayFor2();arrayFor3();arrayFor4();}return 0;
}

转载于:https://www.cnblogs.com/dingxiaowei/archive/2013/05/13/3076005.html

NSArray创建和使用相关推荐

  1. NSStirng、NSArray、以及枚举(Method小集合)

    以下内容由angellixf整理,这里制作记录: /************************************************************************** ...

  2. iOS开发-NSArray

    忙了一上午,解决了几个bug,现在终于抽出来一点时间喝点水休息下, 想着系列这么浩大的一个工程,才刚刚开始写,不能断了,就跟写小说一样,既然是系列,那么就需要不停更... 好吧. 简单的说说iOS开发 ...

  3. 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词

    一. 字符串 API 1. NSString 用法简介 (1) NSString API 介绍 NSString 功能 : -- 创建字符串 : 使用 init 开头的实例方法, 也可以使用 Stri ...

  4. NSArray/NSMutableArray基础操作

    /******************************************************************************************* NSArray ...

  5. [转]Iphone NSString字符串常用方法

    /******************************************************************************************* NSStrin ...

  6. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

  7. NSString 练习

    //将"⽂文艺⻘青年"改成"213⻘青年". NSString *str = @"文艺青年"; NSString *str1 = [str ...

  8. NSString 字符串 操作 常用

    //将NSData转化为NSString         NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8 ...

  9. Object-c 中字符串与数组的处理

    //一.NSString /*----------------创建字符串的方法----------------*/   //1.创建常量字符串. NSString *astring = @" ...

最新文章

  1. vue-component
  2. 谷歌移动应用强调设计元素:向极简风格转型
  3. uva 11997——K Smallest Sums
  4. [poj2752]Seek the Name, Seek the Fame_KMP
  5. 《A Practical Guide to Continuous Delivery》作者访谈录
  6. linux a7 a8,iOS12 A7/A8 固定Generator值 图文教程
  7. 拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
  8. C#.NET面试题:一批编号为1-100全部开关朝上(开)的灯进行以下操作: 开关编号凡是1的倍数反方向拨一次开关;若该编号也是2的倍数反方向又拨一次开关;若该编号又是3的倍数反方向又拨一次开关……
  9. 社交自媒体整合网络营销推广方案的7个方法
  10. 利用MEGA-X选择模型及构建美化进化树
  11. HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
  12. 跨境电商亚马逊需要多少成本及运营亚马逊难吗
  13. 中集集团高科技企业中集飞瞳,贯彻国家人工智能与实体经济深度融合战略,成熟AI产品智能航运智能化港航智慧港口智能铁路智能多式联运
  14. Idea解决项目起不来的三个方法
  15. vue + moment.js 自己写日历
  16. 电气设备新能源行业周报
  17. 国外优秀区块链创业公司梳理
  18. excel 问题,vba
  19. 在Python中优雅的格式化字符串的两种方式
  20. 国企上班是怎样的感受?

热门文章

  1. jekenis父子结构项目打包_maven 父子工程打包 并且上传linux服务器
  2. python怎么只打印其中一行_如何在Python中让两个print()函数的输出打印在一行内?...
  3. PyCharm的光标插入与覆盖模式
  4. python databaselibrary_Robot Framework下DataBaseLibrary的使用
  5. 三菱d700变频器模拟量控制_PLC和变频器:开关量控制和模拟量控制什么区别?...
  6. JAVA面试题集收藏大放送
  7. eclipse配置本地连接 hadoop
  8. 准考证打印系统关闭怎么办_初级会计准考证无法打印受限制怎么办?学姐帮你解答相关问题...
  9. 禁用内存清理_MySql那些事儿(二):InnoDB架构介绍之内存篇
  10. c语言指着与数组,C语言指针与数组