初始化,设计初始化方法

Object-C 创建对象分为两个步骤 : 分配内存、初始化

例:Fraction *frac=[[Fraction alloc] init] ;

1.

 alloc 是从 NSObject 继承而来的类方法,用于给对象分配足够的存储空间,赋于初值为0。(整数类型为 0,浮点数为 0.0,BOOL 为 NO,对象类型为 nil,alloc 方法返回对象的指针)

2.

init是从NSObject继承而来的成员方法,如果你创建自己的类,那你需要定制自己的 init 方法。

Object-C 对 init 方法没有特殊的要求,就是一个普通方法而已,只不过习惯以init 作为方法前缀,这种方法的作用就是为对象初始化。

一般 init 方法都返回当前类型的指针或者 id 类型,所以一般在创建对象时,都会指定明确的对象类型,将id类型赋给它。例子中就把初始化后的ID 赋给了 Fraction类型的指针*frac.

 

在谈论内存分配之前,老头子先讲解了初始化,因为我之前学习过JAVA,这个相当于JAVA中的构造方法。也就是说,在每次创建对象的时候,都需要调用初始化方法。

在众多的初始化方法中,特别需要注意的是,每个类都需要一个默认初始化方法。这个方法会在每次创建对象的时候被调用,它存在于你设计的其他初始化方法之中。

如:

这是默认初始化方法的两种写法,它们的作用是相同的,经常使用的写法是右边这个。需要注意的是,这里self = [super  init] ,不是判断self与[super init]是否相等,而是判断是否可以成功初始化。[super init]:父类初始化成功的话,通过=给self,这样self成为一个非空对象,整个来说即非false(非NO) 。

在其他初始化方法中,会调用你所写的默认初始化方法:

self = [self  init],super换成了self,这是因为调用的是本类中的默认初始化方法,然后再由本类中的这个默认初始化方法调用父类的默认初始化方法,完成初始化。

所以设计你的初始化方法的时候,注意self和super ,不要用错地方了。

初始化方法都不会太复杂,大多进行的都是简单的将传入值,赋值给对象里的实例变量。就像图片里的:

self.valiOperations = anArray ;

你不用关系这个变量到底是什么,回顾一下前面学过的知识,应该不难知道这里self.valiOperations其实是调用了set方法。

当你的对象是nil,调用任何方法都会返回0,也就是什么都没做。

不是每一次创建对象都需要使用到init和alloc

比如 :  [dictionary  allkeys ]

 

转载于:https://www.cnblogs.com/-xiaole/archive/2013/03/22/2975556.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值