关于init初始化方法

最近看了些书, 发现其中一些都对init的设计方法做了些说明, 这里总结下:

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

init方法应当遵循的规则:

  • 如果某个类有多个初始化方法,那么应该由其中的一个方法来完成实际的任务,该方法称为指定初始化方法. 其他的初始化方法都应该(直接地或间接地)调用指定初始化方法.
  • 指定初始化方法应该先调用父类的指定初始化方法,然后再对实例变量进行初始化.
  • 如果某个类的指定初始化方法和父类的不同(这里指的是方法名不同),就必须覆盖父类的指定初始化方法,并调用新的指定初始化方法.
  • 如果某个类有多个初始化方法, 就应该在相应的头文件中明确的注明, 哪个方法是指定初始化方法.

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

  1. 定义自己的指定初始化方法, 确保调用了直接父类的指定初始化方法.
  2. 重载直接父类的指定初始化方法, 并且在此方法中调用你的新的指定初始化方法.
  3. 为新的指定初始化方法写注释.

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

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

就好像水闸, 闸立在这里, 水流就会受到我的控制,没有别的出口, 相应的,指定初始化方法的这种模式也能有效的管理初始化方法

转载于:https://www.cnblogs.com/shaox/p/4934676.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值