我已经阅读了很多关于指定初始化器和便利初始化器的内容,objective-c
并且觉得我对它们的使用方式和原因有很好的理解。我只有几个悬而未决的问题,一个真的。
假设您有一个直接继承自的类,NSObject
并为它创建了一个指定的初始化程序。
我意识到您现在可以使用NS_DESIGNATED_INITIALIZER标记您指定的初始化程序,但我想知道这是否意味着它会强制您在同一个类中分别首先通过调用您指定的初始化程序来覆盖 init?
其次,如果您不使用这个宏,那么在调用指定的初始化程序时不显式覆盖 init 可能意味着什么?我意识到编译器不知道哪个是指定的初始化程序,所以这会不会有什么不好的事情发生,当你为你的类创建一个新的指定初始化程序时,重写 init 是否只是一种好习惯?
编辑:我只想进一步澄清这个问题。我见过一些优秀的程序员没有添加不同的方法来覆盖 init 的例子,尽管他们添加了他们自己制作的指定初始化程序。当我问你是否应该重写 init 时,我的意思是除了创建你自己的特定指定初始化程序之外,它当然应该调用它的超类的 init 方法。我见过一个好的程序员不这样做,所以我想知道你为什么要这样做。