编写高质量OC代码52建议总结:16.提供“全能初始化方法”

全能初始化方法
本文介绍在Objective-C中如何正确实现和使用全能初始化方法。通过这种方式可以简化类实例化的流程,并确保在底层数据存储机制发生变化时只需修改一处代码。

如果创建类实例的方式不止一种,会有多种初始化方法,仍要选择其中一个作为“全能初始化”方法,令其他初始化方法都来调用它。

- (instancetype)init NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti NS_DESIGNATED_INITIALIZER;
 - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;
 - (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)secs;
 - (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
- (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti NS_DESIGNATED_INITIALIZER;是“全能初始化方法”,其他初始化方法都会调用它。只有在全能初始化方法中,才会储存内部数据。当底层数据存储机制改变时,只需修改此方法的代码就可以。

在类中提供一个全能初始化方法,并于文档中指明。其他初始化方法均应调用此方法。
若全能初始化方法与超类不同,则需覆写超类中的对应方法。
如果超类的初始化方法不适用于子类,应该覆写这个超类的方法,并在其中抛出异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值