1

ほとんどのコードでは、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;
}
4

2 に答える 2

4

私はデストラクタsuperでlast を呼び出し、コンストラクタで first を呼び出します。は一種のデストラクタなので、最後に呼び出します。しかし、この場合は好みの問題です。viewDidUnload

また、補足viewDidUnloadとして、iOS 6以降は非推奨です。

于 2012-10-11T19:48:33.607 に答える
2

親と子の 2 つのクラスがあるとします。子は親から継承します。文字列を返すgreetというメソッドがあります。

親メソッドは次のようになります。

コード:

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

私たちは子供に両親から学ばせたいと思っています。だから私たちは super を使って、ママがどのように挨拶するかを言いますが、私たち自身の小さな追加もあります.

コード: // 親から継承

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

これで、親は「こんにちは」と挨拶し、子供は「こんにちは、ママ」と挨拶します。後で、親のあいさつを「こんにちは」だけを返すように変更すると、両方のクラスが影響を受け、「こんにちは」と「こんにちは、ママ」が表示されます。

super は、スーパークラスによって定義されたメソッドを呼び出すために使用されます。サブクラスによってオーバーライドされたメソッドにアクセスするために使用されるため、クラスは、その親クラスが実装するメソッドを独自のコードでラップできます。なんらかの継承を行う場合、非常に便利です。

于 2015-03-09T07:18:21.493 に答える