关于init初始化方法
2015-11-03 23:00
141 查看
最近看了些书, 发现其中一些都对
当然, 和
如果某个类有多个初始化方法,那么应该由其中的一个方法来完成实际的任务,该方法称为指定初始化方法. 其他的初始化方法都应该(直接地或间接地)调用指定初始化方法.
指定初始化方法应该先调用父类的指定初始化方法,然后再对实例变量进行初始化.
如果某个类的指定初始化方法和父类的不同(这里指的是方法名不同),就必须覆盖父类的指定初始化方法,并调用新的指定初始化方法.
如果某个类有多个初始化方法, 就应该在相应的头文件中明确的注明, 哪个方法是指定初始化方法.
如果当子类需要重新定义他的指定初始化方法时(名称和父类的指定初始化不同), 需要遵循以下三个步骤:
定义自己的指定初始化方法, 确保调用了直接父类的指定初始化方法.
重载直接父类的指定初始化方法, 并且在此方法中调用你的新的指定初始化方法.
为新的指定初始化方法写注释.
不应当从指定初始化方法中调用一个次级的初始化方法 .
那么简单的说下这么做的好处吧:
简单有效的规范了初始化方法
比如说吧, 当你不小心调用了一个子类并没有覆写的初始化方法, 如果你的类继承体系是基于以上原则的, 那么按照规则, 子类最终还是会调用子类自己的指定初始化方法的.
就好像水闸, 闸立在这里, 水流就会受到我的控制,没有别的出口, 相应的,指定初始化方法的这种模式也能有效的管理初始化方法
init的设计方法做了些说明, 这里总结下:
当然, 和
NSCoding协议相关的对象要另外考虑.
init方法应当遵循的规则:
如果某个类有多个初始化方法,那么应该由其中的一个方法来完成实际的任务,该方法称为指定初始化方法. 其他的初始化方法都应该(直接地或间接地)调用指定初始化方法.
指定初始化方法应该先调用父类的指定初始化方法,然后再对实例变量进行初始化.
如果某个类的指定初始化方法和父类的不同(这里指的是方法名不同),就必须覆盖父类的指定初始化方法,并调用新的指定初始化方法.
如果某个类有多个初始化方法, 就应该在相应的头文件中明确的注明, 哪个方法是指定初始化方法.
如果当子类需要重新定义他的指定初始化方法时(名称和父类的指定初始化不同), 需要遵循以下三个步骤:
定义自己的指定初始化方法, 确保调用了直接父类的指定初始化方法.
重载直接父类的指定初始化方法, 并且在此方法中调用你的新的指定初始化方法.
为新的指定初始化方法写注释.
不应当从指定初始化方法中调用一个次级的初始化方法 .
那么简单的说下这么做的好处吧:
简单有效的规范了初始化方法
比如说吧, 当你不小心调用了一个子类并没有覆写的初始化方法, 如果你的类继承体系是基于以上原则的, 那么按照规则, 子类最终还是会调用子类自己的指定初始化方法的.
就好像水闸, 闸立在这里, 水流就会受到我的控制,没有别的出口, 相应的,指定初始化方法的这种模式也能有效的管理初始化方法
相关文章推荐
- 域名重定向的问题。
- 线性结构3 Pop Sequence(PAT)
- spring入门-----spring中遍历各种集合
- 判断网站的访问平台,并且动态加载外部CSS
- 设计模式--适配器模式
- 操作系统:用二值信号量和一些机器指令实现计数信号量
- programming-challenges Playing with Wheels (110902) 题解
- 开源中国
- c++初始化列表
- 影响世界的100个经典管理定律
- 课上讲的几个新的技巧
- 线性结构3 Pop Sequence(PAT)
- input chechbox选中
- swift学习笔记_iOS开发(二)
- C语言:判断一个字符串是否为另外一个字符串旋转之后的字符串。(左旋右旋、求子串)
- poj 3176 Cow Bowling
- android:#FFFFFFFF 颜色码解析
- 动画代码
- LightOJ - 1403 Air Raid(二分图)
- Java基础(13):异常