您的位置:首页 > 其它

关于init初始化方法

2015-11-03 23:00 141 查看
最近看了些书, 发现其中一些都对
init
的设计方法做了些说明, 这里总结下:

当然, 和
NSCoding
协议相关的对象要另外考虑.

init
方法应当遵循的规则:


如果某个类有多个初始化方法,那么应该由其中的一个方法来完成实际的任务,该方法称为指定初始化方法. 其他的初始化方法都应该(直接地或间接地)调用指定初始化方法.

指定初始化方法应该先调用父类的指定初始化方法,然后再对实例变量进行初始化.

如果某个类的指定初始化方法和父类的不同(这里指的是方法名不同),就必须覆盖父类的指定初始化方法,并调用新的指定初始化方法.

如果某个类有多个初始化方法, 就应该在相应的头文件中明确的注明, 哪个方法是指定初始化方法.

如果当子类需要重新定义他的指定初始化方法时(名称和父类的指定初始化不同), 需要遵循以下三个步骤:

定义自己的指定初始化方法, 确保调用了直接父类的指定初始化方法.

重载直接父类的指定初始化方法, 并且在此方法中调用你的新的指定初始化方法.

为新的指定初始化方法写注释.

不应当从指定初始化方法中调用一个次级的初始化方法 .

那么简单的说下这么做的好处吧:

简单有效的规范了初始化方法

比如说吧, 当你不小心调用了一个子类并没有覆写的初始化方法, 如果你的类继承体系是基于以上原则的, 那么按照规则, 子类最终还是会调用子类自己的指定初始化方法的.

就好像水闸, 闸立在这里, 水流就会受到我的控制,没有别的出口, 相应的,指定初始化方法的这种模式也能有效的管理初始化方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: