Objective-C学习-数组 NSArray 和 NSMutableArray-程序员宅基地

技术标签: 移动开发  c/c++  

  在学习 Objective-C的过程中,感觉数组在这一个学习方面是一个比较大的应用域,所以写这篇随笔来总结一下。

  首先声明的是,与C语言的数组不同,Objective-C的是数组只能用来存储对象,而不是存储int 、double、char等基础数据类型,一般要存这些基础数据类型,对于我这个刚学 Objective-C的新手来说,我的做法是将有关数字的基础类型 如 int 、double、char首先转换成一个叫做 NSNumber的类  char*类型的转换成  Objective-C的字符串  NSString 类来进行储存,相关 NSNumber 和 NSString 在以后我学习到的时候会来总结一下我的学习成果。

 

 

       Objective-C的数组分为两种,一种叫做不可变数组(NSArray),一种叫做可变数组(NSMutableArray),NSMutableArray类是NSArray类的一个子类。

  (1)不可变数组(NSArray) ---------该类型在确定之后,不能进行数组元素的更改以及交换

    //初始化------(两种方式)

 

      NSArray * array =[ [NSArray alloc] initWithObjects:@"abc",@"123",@"ABC", nil];            

      NSArray * array = @[@"abc",@"123",@"ABC"];     //后来看到老师定义数组的时候用这种方式进行的初始化,所以也记录了下来

 

  (2)可变数组(NSMutableArray)-------该类型在确定之后,可以进行元素的增、删、改(包括元素的位置 以及 数组的元素个数)  

               //初始化------(两种方式)

      NSMutableArray * mutableArray = [[NSMutableArray alloc] init];

      NSMutableArray * mutableArray = [NSMutableArray array];   //教我的老师演示时的初始化,两种初始化有没有区别,或者不同,现在先不讨论

    

    //增加元素

      对于可变数组,苹果给我们提供了很多方法,因为新手的原因,我基本也使用了其中的一种      

       [mutableArray addObject:(id)]; //这是mutableArray 对象调用增加元素的一个方法

       例如:[mutableArray addObject:@"EFG"]; //这是在mutableArray 对象中添加了一个NSString 类型的元素,值为@"EFG"

     

    // 删除元素     

      [mutableArray removeAllObjects];  //这个方法是移除 mutableArray 中的所有元素         

      [mutableArray removeLastObject]; //这个方法是移除 mutableArray 的最后一个元素

    

      [mutableArray removeObject:(id)]; //这个方法是移除值为id的元素(这样描述其实是不正确的),id实际存放的应该是地址,但字符串除外

      例如:[mutableArray removeObject:@"abc"]; //这是在mutableArray  对象中删除了一个值为"abc"的元素

 

      [mutableArray removeObjectAtIndex:(NSUInteger)];  //这个方法是移除位置为  NSUInteger 的元素,这个数字实际是删除类似下标为 NSUInteger的元素

      例如:[mutableArray removeObjectAtIndex:3];  //这是删除了第4个元素

 

    //修改元素位置

    [mutableArray exchangeObjectAtIndex:(NSUInteger1) withObjectAtIndex:(NSUInteger2)] //这个方法是将位置  NSUInteger1 的元素和 NSUInteger2 的元素进行交换位置

    例如:[mutableArray exchangeObjectAtIndex:1 withObjectAtIndex:2];//意思是将第2个元素和第3个元素交换(因为NSUInteger是下标)

 

  /*****

  ***数组的遍历 (我所了解的目前有三种方式)

     ****/

  1、枚举器法  (这种方法在遍历过程中不能改变数组的个数以及元素的位置,不然会出错)

      NSEnumerator * enumerator = [mutableArray objectEnumerator];//构造枚举器

      id obj;

      while (obj = [enumerator nextObject]) {

          //obj既为元素

      }

 

  2、快速枚举法  (有的叫做 快速for循环) (这种方法依旧在遍历过程中不能改变数组的个数以及元素的位置,不然会出错)

      for(id obj in mutableArray){

          //obj既为元素

      } //这种方法他们都说是最快的,我也就当作最快的来用

 

   对于枚举器,还有一种叫做逆序枚举器,方法如下  

    NSEnumerator *enumrator = [mutableArray reverseObjectEnumerator];//构造逆序枚举器,用法同枚举器一样,但不一样的是,用逆序枚举器遍历的时 候,以上两种方法可以改变数组的个数以及元素的位置。

 

  3、使用for循环进行遍历 (这种遍历方法可以在循环中改变数组的个数以及元素的位置)

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

          id obj = [mutableArray objectAtIndex:i];// obj既为元素

      }

 

转载于:https://www.cnblogs.com/Yue-Wen/p/4690027.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dfnla66824/article/details/102135076

智能推荐

ASP应用之模板采用_asp 底部公用模板在哪里找-程序员宅基地

首先,模板需要在线修改,则应采用数据库保存模板代码所谓的模板,就是设计完工的标准的HTML代码,其中需要由程序实现的功能部分将采用特殊字符串代替。然,这些特殊字符串需要在显示的时候被编译为对应的功能。1,设计数据库testmb.mdb新建表moban:字段m_id(自动编号,主关键字);字段m_html(备注类型)2,假设第一模板内容代码将下列代码拷贝到m_html字段中 _asp 底部公用模板在哪里找

-Xmx512m -Xms256m -Xmn256m 都是什么意思_cm_pq的博客-程序员宅基地

-Xmx512m :JVM最大分配的内存大小为512m-Xms256m :JVM初始分配的内存大小为256m-Xmn256m:设置年轻代的大小,设置越大,gc越少._-xmx512m

html模拟鼠标点击图标,易语言模拟鼠标点击实现方法_拉乐的博客-程序员宅基地

易语言对于初学者而言是一种非常好学的中文编程语言,能够快速地实现很多功能,全汉语编程,简单易上手,易语言功能强大实用,系统全部自行设计开发,且易语言自带的即时帮助系统,非常方便。这里,教大家如何实现模拟鼠标点击。1、进入易语言界面,在右边的工具栏中,分别找到“编辑框""标签”“按钮”三个控件。2、在主编辑界面中,如图所示摆放位置,进行初步界面搭建。3、在左侧的属性栏中找到“标题”属性,分别给标签设..._易语言模拟网页点击

xshell有时连上,有时连接不上虚拟机_xshell有的节点连不上有的节点能连上_叶 落的博客-程序员宅基地

xshell有时连上,有时连接不上虚拟机最近在学hadoop,自己搭建了虚拟机,后来虚拟机越来越多,大概有7、8台,然后经常切换无线网,后来有时xshell连不上这台虚拟机,过了一段时间又好了,但是另外一台缺连不上了。经过排查xshell、hadoop、vmware,最终确定是家庭网络中有一个WLAN的ip和虚拟机的ip重复了,而且WLAN的ip是自动分配的,也就是可能一会和第一台虚拟机的ip重复,一会可能会和另外一台虚拟机的ip重复。解决办法:在cmd命令行中使用ipconfig命令可以查看WLAN_xshell有的节点连不上有的节点能连上

com词根词缀_英语词根词缀,cor和con分别代表什么意思-程序员宅基地

展开全部词根词缀cor-表示“共同”与“表加强”之意。而词根词缀con-也表示“共同”与“表加强”之意,两者32313133353236313431303231363533e59b9ee7ad9431333431366239应用区别:cor-后续词是加r开头的英文;con-后续词无要求。一、cor-1、correlate v./n. 相互关联cor 共同 + relate 联系 → 共同联系 → ..._com词根的意思

随便推点

Java-集合案例一_java集合代码案例_Yeung_ZY的博客-程序员宅基地

public class Student { private String name; public Student(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { retu.._java集合代码案例

run its course-程序员宅基地

run its course按常规进行 顺其自然he was pretty much going to stay out of the case until the legal process had run its c..._it had run its course

NetBeans 界面美化与字体设置-程序员宅基地

中文 Windows 下面,NetBeans 默认的界面和字体实在有点丑,得优化一下。 安装最新的 JDK必须安装 Java SE Development Kit (JDK) 6 Update 10 或更新的版本,早期版本对字体反锯齿支持不好。下载地址:http://java.sun.com/javase/downloads/index.jsp 安装 ClearTyp

Odoo----如何删除 Powered by Odoo_my odoo.com account-程序员宅基地

虽然不太推荐,在使用中总是有人想去除“Powered by Odoo”这段文件,你可能会在网上查找说修改addons/web/views/webclient_templates.xml却并没有效果,下面整方法如下:1.后台左下角打开开发者模式,Settings>General Settings>Technical>User Interface>Views(如上图)搜索web.menu_secondary,找到如下代码并注释<div class="o_sub_menu_._my odoo.com account

黑白棋代码——完结版_黑马官网是什么黑白棋代码网盘-程序员宅基地

黑白棋的底层决策算法_黑马官网是什么黑白棋代码网盘

Android 用户界面---菜单-程序员宅基地

为什么80%的码农都做不了架构师?>>> ...