五十五、基础框架(十三)创建 地址簿-3

我们创建的AddressCard这类物件  已经能够  正常  工作了。万一  我  想要创建  许多的地址卡片呢?那么  我们  就需要将  这些地址卡片  搜集起来。于是  我们  就需要创建  AddressBook,也就是  地址簿,这类物件  来代表  搜集起来的卡片。每个AddressBook类型的物件  都会包含  一个可修改的数组物件  用来存储  各张地址卡片。我们创建的AddressBook这类物件  要能够添加  新的卡片,计算  卡片的数量,列举出  各张卡片的内容,最后  还要能够搜索  地址簿中的内容,删除  卡片,编辑  卡片,整理  卡片等等等等。

下面  是  AddressBook这类物件的接口文件AddressBook.h

其中  initWithName:这项措施  用来创建  存储卡片的数组物件  同时  设定  地址簿的名称。addCard:这项措施  用来将  卡片  添加  到地址簿当中。entries这项措施  用来计算  地址簿中  地址卡片的数量。list这项措施  用来将  地址簿中的卡片  简略地  显示出来。

下面  是  AddressBook这类物件的实施文件AddressBook.m,这个文件  描述了  适用于AddressBook这类物件的各项措施  是如何  实施的。

在initWithName:这项措施当中

这行语句中的self  和  super两个关键字  都是指  initWithName:这项措施的实施对象。但是

是对  initWithName:这项措施的实施对象  采取  适用于NSObject这类物件的init这项措施,对  其  进行初始化,因为  AddressBook这类物件  包含  在NSObject这类物件当中。

接着

这行语句  会判断  initWithName:这项措施的实施对象  是否为  空,如果  不是,就会执行 接下来的语句。

这行语句  用  字符串name的内容  创建了  一个新的字符串  并且  存储  在bookName当中。其中  参数的内容  就存储  在字符串name当中,所以  这行语句的作用  就是  将  地址簿的名称  设定成  参数的内容。

这行语句  创建了  一个NSMutableArray类型的物件。

在设定  地址簿名称bookName这个物件  和  创建  数组物件book时,都用到了  alloc这个消息  来分配新的内存地址。这样的话  bookName  和  book这两个物件的地址  都存储  在AddressBook物件中,也就是  说  AddressBook物件  掌握着  bookName  和  book这两个物件的所有权。当你  将AddressBook类型的物件  从内存中  清理出去时  你  就可以同时将  bookName  和  book着这两个物件  从内存中  清理出去。

在addCard:这项措施当中,我  对  其实施对象所包含的数组物件book  采取了  addObject:这项措施。addObject:这项措施  会将  其参数,也就是  这里的地址卡片,添加  到其实施对象,也就是  数组物件book,当中。

在entries这项措施当中,我  对  其实施对象所包含的数组物件book  采取了  count这项措施。count这项措施  会计算出  其实施对象所包含的元素数量。

在list这项措施当中,使用了  一个你可能从来没有见过的结构:

这个技巧  被称为  快速枚举。这里  利用  快速枚举  依次  读取  数组物件book中的物件。每次读取出来的物件  都会被存储  在AddressCard *类型的变量card中。每当读取完  book中的一个物件,循环体中的语句

就会执行一次,将  当前读取出来的物件的内容  显示出来。

我们  用  下面的程序  来测试  AddressBook这类物件  是否能正常工作。

运行  这个程序过后,可以得到  这样的结果:

这个程序  先  创建了  四个AddressCard物件,并且  设定了  每个物件中的姓名  和  邮箱地址。然后  创建了  一个AddressBook物件  作为  地址簿。接着  对  这个AddressBook物件  采取了  addCard:这项措施,将  各张地址卡片  添加  到地址簿当中。最后  对  这个AddressBook物件  采取了  list这项措施,从而  将  地址簿中的内容  显示出来。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值