“约定
我看到一些示例代码与[super viewDidLoad]在实现之前和实现之后调用。
我知道你不必总是打电话给超级(正如其他许多讨论中所看到的)。 当你打电话的时候,是不是在你编码之前或之后?
这可能会有后果取决于超级的实施。 虽然你不应该知道超级的实现来写你的。
当然,这适用于所有的UIViewControllers委托方法(willAppear,didAppear等)
有什么想法吗?
我的经验法则是:如果你正在做一些与初始化有关的事情,总是先调用超类的方法(如果你打算调用它的话)。 这给了超类有机会做任何你可能在以后在你的方法依赖的设置。 如果你正在做一些与销毁有关的事情,最后再调用超类的方法。 这可以确保在整个执行过程中可以依赖对象的状态。 最后,根据具体情况采取其他方式。 例如,如果你正在处理一个事件,你可能首先要处理这个事件,如果你select不处理这个事件,或者你改变了它,并且想把它传递给事件,那么只需要调用超类的方法链。
假设你有两个class级,一个父母和一个孩子。 子从父inheritance。 他们有一个叫greet的方法,它返回一个string。
以下是父级方法的样子:
码:
-(NSString *)greet { return @"Hello"; }
我们希望孩子向他的父母学习。 所以我们用超级来表示问候妈妈怎么会打招呼,但是也有我们自己的小小的补充。
代码://从父inheritance
-(NSString *)greet { NSString *parentGreeting = [super greet]; return [parentGreeting stringByAppendingString:@", Mommy"] }
所以现在,家长问候“你好”,孩子问候“你好,妈妈”。 后来,如果我们改变家长的问候来回报“嗨”,那么两个class都会受到影响,你会有“你好”和“你好,妈妈”。
super用于调用由超类定义的方法。 它用于访问被子类覆盖的方法,以便类可以将自己的代码包装在父类实现的方法中。 如果你正在做任何types的inheritance,这是非常方便的。