OC中构造方法if(self=[super init])

iOS 码拜 7年前 (2015-11-24) 680次浏览
为什么要调用[super init] ?
为什么要判断self != nil ?
解决方案:20分
在以前的帖子: http://bbs.csdn.net/topics/391009418 中回答过相似的问题。
主要是类继承的问题。一个子类从父类继承,获得相关的属性和方法,所以在子类的初始化方法中,必须首先调用父类的初始化方法,以实现父类相关资源的初始化。
[super init]的作用:
面向对象的体现,先利用父类的init方法为子类实例的父类部分进行属性初始化。
调用[super init]时可能会alloc失败,所以我们通过判断self ! =nil 来决定能否执行下面的初始化操作,假如为nil 实例创建失败,终止if内的语句执行。
在swift中,就不再允许用户去主动调用init来完成对象的创建及初始化,它是通过init构造函数来完成对象的创建。同时在swift中也有相似的“可能失败的构造器”的概念。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明OC中构造方法if(self=[super init])
喜欢 (0)
[1034331897@qq.com]
分享 (0)