Xcode基础:Objective-C中的数组详解
2014-09-11 12:46
411 查看
有些时候,你需要使用一系列数据。比如一堆字符串,将每一个串都赋一个变量将是一件很麻烦的事情。当然,Objective-C中,这里有更好的解决方案:数组(array)。一个数组是一组有序的对象列表(更具体的说是一组对象指针的列表)。你可以向数组添加对象,移除对象,或者查看数组的给定位置上存放了哪个对象。你也可以查看数组里包含了几个元素。
我们数数习惯由1开始。在数组中,第一个元素的索引是0,第二个索引是1,以此类推。
本文后面的部分还会有一些例子来说明从0开始计数的作用。
有两个类提供了数组:NSArray和NSMutableArray。带有字符串的数组分为固定数组和可变数组两种。在本章中,我们只体积可变数组。
通过执行下面这个步骤可以创建数组:
[NSMutableArray array]
这个语句会产生一个空数组。但是……请等等,这句代码有些古怪,不是么?实际上,这个例子中我们使用类NSMutalbeArray的名字来说明信息接收方。但是我们希望向类的一个实例发送信息,而不是类本身。
好了,我们又学到了一些新的东西:事实上,在Objective-C语言中,我们可以向类发送信息(原因是类本身也是对象,它是被元类(meta-class)的实例,但本书中不再就此问题做深入探讨)。在Cocoa的说明文件中,能够直接作用于类的方法(类方法)名称前用加号“+”标示,与前面表示减号“-”的实例方法不同(见第8章例[4.5])。在说明文件中我们可以见到对方法array这样的描述:
再回到代码中,下面的程序用于创建一个空的数组,并将三个字符串储存在其中,之后显示数组元素个数。
例[1]
There are 3 elements in my array
接下来的程序和前面的大体一致,只是最后显示存储在索引0中的的字符串。为此,我们在语句行[2.13]中使用了方法“objectAtIndex:”。
例[2]
The element at index 0 in the array is: first string
你将会经常需要查看数组中的每一个元素以便进行其它操作。为此你可以参照下面例子,使用循环语句按照索引顺序显示数组中的每个元素:
The element at index 0 in the array is: first string
The element at index 1 in the array is: second string
The element at index 2 in the array is: third string
需要注意的是数组不仅仅可以用于字符串操作。它可以用于任何你希望用数组操作的对象。
类NSArray和类NSMutableArray提供了许多其它方法,希望你能够通过查看说明文件进一步学习与数组操作相关的知识。我们把置换数组内元素这个问题作为本章的结束。置换数组内元素要使用到方法“replaceObjectAtIndex:… withObject:…”。到目前为止,我们见到的方法最多只有一个参数,而这个方法不同,这就是为什么你在这里看到它,它带有两个参数。其实你可以看出来的,因为这个方法带有两个冒号。在Objective-C语言的方法可以使用任意多参数。下面是这个方法的语法:
[myArray replaceObjectAtIndex:1 withObject:@"Hello"];
运行这个方法后,索引1中的对象已经变成了字符串@”Hello”。当然,这个方法只能援引那些有效的索引。换句话说,原来索引中应当有对象,我们才可以用这个方法置换进新的对象。你可能发现了,Objective-C语言的方法的名字好似句子填空。当你要使用一个方法,只要填上你需要的值构成一个有意义的“句子”即可。这种给方法命名的方法来源于Smalltalk(一种由Xerox公司开发的面向对象的系统——译者按),也是Objective-C语言一大特色,它可以大大增强代码的描述性。当创建自己的方法时,你也应当尽量按照这种方法命名,不仅可以提高代码的可读性,而且使你的程序便于维护。
我们数数习惯由1开始。在数组中,第一个元素的索引是0,第二个索引是1,以此类推。
本文后面的部分还会有一些例子来说明从0开始计数的作用。
有两个类提供了数组:NSArray和NSMutableArray。带有字符串的数组分为固定数组和可变数组两种。在本章中,我们只体积可变数组。
通过执行下面这个步骤可以创建数组:
[NSMutableArray array]
这个语句会产生一个空数组。但是……请等等,这句代码有些古怪,不是么?实际上,这个例子中我们使用类NSMutalbeArray的名字来说明信息接收方。但是我们希望向类的一个实例发送信息,而不是类本身。
好了,我们又学到了一些新的东西:事实上,在Objective-C语言中,我们可以向类发送信息(原因是类本身也是对象,它是被元类(meta-class)的实例,但本书中不再就此问题做深入探讨)。在Cocoa的说明文件中,能够直接作用于类的方法(类方法)名称前用加号“+”标示,与前面表示减号“-”的实例方法不同(见第8章例[4.5])。在说明文件中我们可以见到对方法array这样的描述:
再回到代码中,下面的程序用于创建一个空的数组,并将三个字符串储存在其中,之后显示数组元素个数。
例[1]
#import <foundation foundation.h=""> int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray *myArray = [NSMutableArray array]; [myArray addObject:@"first string"]; [myArray addObject:@"second string"]; [myArray addObject:@"third string"]; int count = [myArray count]; NSLog(@"There are %d elements in my array", count); [pool release]; return 0; }</foundation>运行结果如下:
There are 3 elements in my array
接下来的程序和前面的大体一致,只是最后显示存储在索引0中的的字符串。为此,我们在语句行[2.13]中使用了方法“objectAtIndex:”。
例[2]
#import <foundation foundation.h=""> int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray *myArray = [NSMutableArray array]; [myArray addObject:@"first string"]; [myArray addObject:@"second string"]; [myArray addObject:@"third string"]; NSString *element = [myArray objectAtIndex:0]; // [2.13] NSLog(@"The element at index 0 in the array is: %@", element); [pool release]; return 0; }</foundation>这次的运行结果如下:
The element at index 0 in the array is: first string
你将会经常需要查看数组中的每一个元素以便进行其它操作。为此你可以参照下面例子,使用循环语句按照索引顺序显示数组中的每个元素:
#import <foundation foundation.h=""> int main (int argc, const char * argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray *myArray = [NSMutableArray array]; [myArray addObject:@"first string"]; [myArray addObject:@"second string"]; [myArray addObject:@"third string"]; int i; int count; for(i = 0, count = [myArray count]; i < count; i = i + 1) { NSString *element = [myArray objectAtIndex:i]; NSLog(@"The element at index %d in the array is: %@", i, element); } [pool release]; return 0; }</foundation>运行结果如下:
The element at index 0 in the array is: first string
The element at index 1 in the array is: second string
The element at index 2 in the array is: third string
需要注意的是数组不仅仅可以用于字符串操作。它可以用于任何你希望用数组操作的对象。
类NSArray和类NSMutableArray提供了许多其它方法,希望你能够通过查看说明文件进一步学习与数组操作相关的知识。我们把置换数组内元素这个问题作为本章的结束。置换数组内元素要使用到方法“replaceObjectAtIndex:… withObject:…”。到目前为止,我们见到的方法最多只有一个参数,而这个方法不同,这就是为什么你在这里看到它,它带有两个参数。其实你可以看出来的,因为这个方法带有两个冒号。在Objective-C语言的方法可以使用任意多参数。下面是这个方法的语法:
[myArray replaceObjectAtIndex:1 withObject:@"Hello"];
运行这个方法后,索引1中的对象已经变成了字符串@”Hello”。当然,这个方法只能援引那些有效的索引。换句话说,原来索引中应当有对象,我们才可以用这个方法置换进新的对象。你可能发现了,Objective-C语言的方法的名字好似句子填空。当你要使用一个方法,只要填上你需要的值构成一个有意义的“句子”即可。这种给方法命名的方法来源于Smalltalk(一种由Xerox公司开发的面向对象的系统——译者按),也是Objective-C语言一大特色,它可以大大增强代码的描述性。当创建自己的方法时,你也应当尽量按照这种方法命名,不仅可以提高代码的可读性,而且使你的程序便于维护。
相关文章推荐
- Xcode基础:Objective-C中的数组详解
- Xcode基础:详解Objective-C开发带有图形界面的程序
- 课程分享Objective-C深入浅出,ios开发零基础入门(Xcode入门及语法入门)
- Objective-C ,ios,iphone开发基础:UIAlertView使用详解
- Objective-C 基础语法详解
- Objective-C 基础语法详解
- Objective-C中数组对象排序的方法(OC中NSString的常用API的基础应用2)
- 黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例
- Objective-C深入浅出,ios开发零基础入门(Xcode入门及语法入门)课程分享
- IOS基础:Objective-C 数组处理
- [Objective-c 基础 - 3.3] @property属性详解
- IPHONE开发基础概念--Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念
- objective-c 基础语法和习题 /类 详解/ . 属性的方法
- objective-c 基础语法和习题 / 类 详解/ 函数多参数的几种用法
- jquery基础教程之数组使用详解
- C++基础积累(2)指针与数组、指针与函数关系详解
- Objective-C的@property 详解(ios,iphone,xcode,retain,release,assign,copy)
- Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)
- objective-c 基础语法和习题 / 类 详解