为何需要调用“super viewDidLoad”

一、为何需要调用“super viewDidLoad”

- (void)didReceiveMemoryWarning
{

[super didReceiveMemoryWarning];

}

- (void)viewDidLoad
{

[super viewDidLoad];

}

在上面的代码中,什么需要调用父类相应的方法呢?

以viewDidLoad为例,父类(super)中的viewDidLoad会帮助你做一些初始化的工作,比如A是父类,B继承A,B在viewDidLoad方法中创建和初始化了一些成员;C又继承B,此时,如果C在调用viewDidLoad的时候没有调用super的viewDidLoad方法,那么就会有一些成员没有被初始化,可能就会产生问题。

二、[super viewDidLoad]和[super viewDidUnload]的调用时机:

 

(1)在iPhone/iPad编程中,viewDidLoad方法用于在试图控制器中加载视图时的初始化处理

在《iPhone4与iPad开发基础教程》中出现过两种写法

  第一种写法:

  - (void)viewDidLoad {

  [super viewDidLoad];

  // 其他代码

  }

  第二种写法:

  - (void)viewDidLoad {

  // 其他代码

  [super viewDidLoad];

  }

不过,我觉得第一种写法更可取,先调用父类的加载代码,再进行自身的加载。

(2)viewDidUnload方法用于在卸载视图时的释放资源处理,比如释放输出口、释放内存等

  - (void)viewDidUnload {

  // 释放代码,比如:self.xxx = nil;

  [super viewDidUnload];

  }

时间: 2024-08-27 00:21:53

为何需要调用“super viewDidLoad”的相关文章

Objective-c 子类重写方法调用[super method]小实验

最近温习<learn objective-c on the mac> 第4章关于重写的调用了[super setFillColor:c]很不理解其作用,可能是因为翻译逻辑不清的原因吧,特地写了个小例子理解一下 定义一个father类和son类 father: #import <Foundation/Foundation.h> @interface father : NSObject { int num; } -(void)setNum:(int)num; @end #import

如何调用super

因此,决定是否调用 super,基于您打算如何重新实施方法: 如果打算补充超类实现的行为,请调用 super. 如果打算替换超类实现的行为,就不要调用 super. 如果您要补充超类行为,另一个需要重点考虑的,是何时调用一个方法的超类实现.

【转】python 调用super()初始化报错“TypeError: super() takes at least 1 argument”

一.实验环境 1.Windows7x64_SP1 2.Anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 二.实验步骤 2.1 在python中有如下代码: class father(): def __init__(self,age): self.age = age; def get_age(self): print(self.age); class son(father): def __init__(self,age): super().__init__(

继承条件下的构造方法调用 super

运行TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大! 程序: class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.o

类方法和实例方法的调用 super this 访问控制符

一.类方法和实例方法的调用 先看一道选择题:下列哪种说法是正确的( ) A. 实例方法可直接调用超类的实例方法 B. 实例方法可直接调用超类的类方法 C. 实例方法可直接调用其他类的实例方法 D. 实例方法可直接调用本类的类方法 先复习一下,类方法(static方法)在类方法中,不能引用实例变量不能使用super.this关键字不能调用类方法 不考虑访问修饰符的话,实例方法可以通过super.方法名,对象名.方法名调用父类的实例方法实例方法可以通过类名.方法名,super.方法名调用父类的静态方

viewDidLoad执行早于initWithNibName

刚发现这个问题的时候太都头疼了,没有init怎么viewDidLoad呢?? 后来发现这是因为重载的原因,父类里面同样有initWithNibName方法,这样执行的顺序就是: initWithNibName(父类) ->  viewDidLoad (子类)-> viewDidLoad (父类)-> initWithNibName(子类) 中间的部分是交叉执行的,因为子类会调用[super viewDidLoad], 这样就会执行父类的viewDidLoad函数. 解决方法很简单:如果你

iOS SDK详解之NSCoding协议

原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:NSCoding是对iOS中的Model类进行编码和解码必须要遵循的协议,如果一个对象要被归档,那么这个协议是必须的. NSCoding要实现两个方法 - initWithCoder: //解码 - enc

IOS生活圈开发练习记录

第一天 1.开启项目 2.再项目设置基本信息,支持ios7以上,不支持横屏,不是ios8以后才又的launch,配置pch 3.为项目添加好分类文件夹,分别是(comment,uis,third,Model) 5.再uis文件夹中分别又有供9个文件夹(主要是8个tabBar的界面,另外一个是新特性显示) 4. 1)今天练习的目标是,在comment文件夹中写好所有类的基类BaseViewControrller,基类提供一些所有controller用到的方法,比如是sdk的MHUA提醒框 2)然后

viewcontroller 各事件的执行顺序说明

今天在用storyboard 写界面开发时遇到一些奇怪的问题.因此记录下用storyboard 布局.以及在代码中使用这些布局应该注意的问题. /*****************刚学IOS不久,问题幼稚与否,还请各位大神轻虐*******************************/ 我的工程界面布局是使用的storyboard 和约束,为了适配方便. 习惯在viewDidLoad中对控件进行一些自定义操作.但是发现,即使页面控件以及与头文件中的IBoutlet 连线了.在viewDidL