何时调用[super viewDidLoad]和[super viewDIdUnload]?

时间:2012-10-11 19:43:20

标签: objective-c ios viewdidload viewdidunload

在我的大多数代码中,我为viewDidLoad和viewDidUnload设置了以下设置:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //do stuff...
}

- (void)viewDidUnload
{
    [super viewDidUnload];

    //do stuff...
}

然而,我想知道......当你调用viewDidLoad和viewDidUnload时有关系吗?我应该在“做东西”之前或之后吗?

换句话说,每个人应该在方法的开头还是结尾?

编辑:为了使事情更复杂,这是Apple的默认viewDidUnload方法,“似乎”建议首先调用[super viewDidUnload] ......

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

2 个答案:

答案 0 :(得分:4)

我最后在析构函数中调用super,然后在构造函数中调用。 viewDidUnload析构函数,所以我会把它称为最后一个。但在这种情况下,这是品味问题。

另外,请注意 - 自iOS 6以来不推荐使用viewDidUnload

答案 1 :(得分:2)

假设您有2个班级,父母和孩子。子继承自Parent。他们有一个名为greet的方法,它返回一个字符串。

这是父方法的样子:

代码:

-(NSString *)greet {
     return @"Hello";
 }

我们希望孩子向父母学习。所以我们用super来说问妈妈会怎么问候,但也有我们自己的小补充。

代码://从父级继承

 -(NSString *)greet {
     NSString *parentGreeting = [super greet];
     return [parentGreeting stringByAppendingString:@", Mommy"]
   } 

所以现在父母问候"你好",孩子问候"你好,妈咪"。稍后,如果我们改变父母的问候语只返回"嗨",那么这两个课程都会受到影响,你将会有#34;嗨"和"嗨,妈妈"。

super用于调用超类定义的方法。它用于访问已被子类覆盖的方法,以便类可以将其自己的代码包装在其父类实现的方法周围。如果你正在做任何类型的继承,这非常方便。