技术开发 频道

苹果开发技术: Cocoa 框架概述

  Easy Life之二:容器

  容器是让多数程序员又爱又恨的东西。在Cocoa中,容器是如此的简单易用以至于您一旦用过,就会对它们“爱不释手”。Cocoa中的容器类主要有这么几个:NSString、NSArray、NSDictionary、NSSet和NSIndexSet等,它们都是Foundation Framework的一部分。

  为什么人们会对Cocoa的容器“爱不释手”呢?

  原因一:NSArray、NSDictionary、NSSet都不强制其内部元素类型的一致性。

  举个简单的例子:

  NSString *aString = [NSString stringWithString:@"This is a demo."];

  NSNumber *aNumber = [NSNumber numberWithInteger:0];

  NSArray *anArray = [[NSArray alloc] initWithObjects:aString, aNumber, nil];

  在上述例子中,我们首先建立了一个NSString对象,然后又建立了一个NSNumber对象,最后我们将这两个NSString和NSNumber对象都“塞”到了一个NSArray对象中。

  有够爽吧?连想都别想,什么东西都能往里面装(基本类型、结构体除外)!

  原因二:容器类的“可修改”和“不可修改”

  上面我们展示的NSString、NSArray、NSDictionary、NSSet以及NSIndexSet等,都是容器的“不可修改”的版本。所谓的“不可修改”,指的是这个容器一旦被创建以后,我们就不可以通过代码修改它的集合。那如果我们需要修改(例如添加、删除、替换)这些容器的元素,该怎么办呢?

  Cocoa中几乎所有的容器类,都提供了另外一个“可修改”的版本。例如:继承自NSString的NSMutableString、继承自NSArray的NSMutableArray、继承自NSDictionary的NSMutableDictioanry、继承自NSSet的NSMutableSet以及继承自NSIndexSet的NSMutableIndexSet等。这些“可修改”的版本提供了简单直观的方法,用来修改其内部的元素。例如:

  NSString *aString = [NSString stringWithString:@"This is a demo."];

  NSNumber *aNumber = [NSNumber numberWithInteger:0];

  NSMutableArray *aMutableArray = [NSMutableArray array];

  [aMutableArray addObject:aString];

  [aMutableArray addObject:aNumber];

  [aMutableArray removeObjectAtIndex:0];

  [aMutableArray removeAllObjects];

  在上述代码中,第一、二行建立了一个NSString对象和一个NSNumber对象。第三行建立了一个NSMutableArray对象(也就是一个“可修改”的NSArray对象)。第四、五行通过-addObject:方法分别将第一、二行建立的NSString对象和NSNumber对象加入了这个“可修改”的NSArray里。第六行则是根据我们给定的索引号0,删除了数组中的第一个元素。第七行的-removeAllObjects最后一口气将数组中存在的所有元素统统删除(置空数组)。

  是不是感觉一切都变的简单了许多呢?

  那就赶快拿起Xcode,开始享受Cocoa编程所带来的快乐吧!

0
相关文章