私はいつ、なぜ呼び出されるのでしょうか。私は方法の間重複コードの多くで自分自身を見つけるdealloc
前に、私たちが呼び出されるviewDidUnload
に頼ることはできませんのでコードの冗長性...私はdeallocでviewDidUnloadを呼び出す必要があります
(多くはすでにその上あります)。
- (void)viewDidUnload {
[super viewDidUnload];
self.foo = nil;
self.bar = nil;
}
- (void)dealloc {
[super dealloc];
[foo release];
[bar release];
[abc release];
}
冗長コード、ick。誰でもこのようにすることで問題を知っていますか?
- (void)viewDidUnload {
[super viewDidUnload];
[foo release];
foo = nil;
[bar release];
bar = nil;
}
- (void)dealloc {
[super dealloc];
[self viewDidUnload];
[abc release];
}
確かに、私は[super viewDidUnload]
への余分な呼び出しを持っているが、私はそれだけでとにかくdealloc
で行われていたであろうものを行いますので、それは非問題の姿。私はviewDidUnload
もアクセサーを使用しないように切り替えました。
また、deallocメソッドで[super dealloc]を最後に呼び出す必要があります。また、親コントローラもアンロードを行っている場合は[super viewDidUnload]と同じものを呼び出す必要があります。 [super dealloc]を最初に呼び出すことで奇妙なバグが発生しました(そして、反対の方法はロードメソッドのためにあります - 他に何かをする前に[スーパーロード]と呼んでください)。 – bandejapaisa