NSCoder, NSObject vs UIView



当我们在NSObject类中实现(id)initWithCoder:(NSCoder *)decoder方法时,我们需要调用[super **init**],但在UIView中,我们需要以某种方式调用[super **initWithCoder:decoder**]。为什么会有这样的区别?这个问题不是重复的,因为它涉及在这种特殊情况下对NSCoder的协议一致性。很可能还有其他类的情况与问题中指定的类似。

对于任何将已经符合NSCoding协议的类划分为子类的类,都应该调用[super initWithCoder:decoder];

在直接扩展NSObject的类的情况下,当然不能调用[super initWithCoder:decoder];,因为NSObject不符合NSCoder,因此没有可以从子类调用的initWithCoder:。所以您必须调用其他init方法。

对于扩展UIView的自定义视图,您可以调用它,因为UIView符合NSCoding

最新更新