三十五、更多数据类型(一)初始化 物件

本文深入探讨了Objective-C中对象初始化的过程及多种初始化方法,特别是针对NSArray类提供的六种不同的初始化方式进行了详细介绍,并提供了实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你  肯定  已经见过  这样的模式:你  先  为  一个新的物件  分配  内存空间,然后  对  其  初始化,就像  这样:

然后  你  再  将  一些数值  存储  在新的物件当中:

初始化  物件  和  设定  物件的初始值  经常  被整合成  一项措施。比如  你  可以用  initWith::这项措施  同时  初始化  Fraction类型的物件  并且  将  这个Fraction类型物件所代表的分数的分子  和  分母  设定  为两个参数的值。

如果  有  很多项措施  适用于  一类物件  并且  这类物件中的每个个体  都包含  很多个体变量,那么  通常  有  若干项初始化措施  适用于  这类物件。比如  有  6项初始化措施  适用于  基础框架中的NSArray这类物件:

initWithArray:

initWithArray:copyItems:

initWithContentsOfFile:

initWithContentsOfURL:

initWithObjects:

initWithObjects:count:

我们  可以像  这样  对  一个NSArray类型物件所代表的数组  进行初始化:

初始化措施  用  init…  开头  是  常见惯例,你  可以看到  适用于  NSArray这类物件的初始化措施  都遵循了  这个惯例。如果  你  自己  编写  初始化措施,你  应该坚持  下面两个步骤。

如果  有  不止一项初始化措施  适用于  一类物件,那么  其中一项初始化措施  应该是  指定初始化措施,其它的初始化措施  都应该使用  指定初始化措施。编写  指定初始化措施  可以将  主要的初始化代码  集中  在一起。

你  还要确保  一个物件从它所属的大类中继承的变量  得到  正确的初始化,最简单的办法  就是  采取  适用于这个物件所属的那类物件的指定初始化措施。讨论  到这里,我们  现在  可以编写出  initWith::这项措施了:

把  initWith::这项措施  应用  到具体的程序中  是  这样的:

在主程序main()当中,alloc这项措施  分配好了  两块内存空间,用来  存储  两个Fraction类型的物件 。

在initWith::这项措施当中  super  代表  NSObject这类物件,而  init这项措施  也是  适用于NSObject这类物件的。采取  init这项措施过后,结果  会被存储  在initWith::这项措施的实施对象当中,也就是  一个NSObject类型的物件  会被存储  在alloc这项措施所分配的内存空间当中。接着的if()语句  会检查  alloc这项措施所分配的内存空间  是否为  空,如果  不为  空,那么  setNumerator:andDenominator这项措施  就会将  n  和  d这两个参数的值  存储  在alloc这项措施所分配的内存空间当中。最后的return语句  将  alloc这项措施所分配的内存空间的地址  作为结果  传递出去。

这两行语句  会把  两个Fraction类型物件的内存地址  存储  在变量a  和  b当中。我们  来运行  这个程序,看看  initWith::这项措施  有没有出错:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值