私の一般的な経験則では、建設/作成の行為はsuper
最初に呼び出され、破壊または破壊状態の行為は逆の順序で発生します-super
最後に呼び出されます。それから逸脱する必要はめったにありません。
その理由は通常、(投稿で尋ねられたように)最適化のためではなく、予測可能なセマンティクスのためです。
例A:
工事:
- (id)init
{
self = [super init]; // << set up super
if (0 != self) {
// set up self
...
破壊:
- (void)dealloc
{
[ivar release], ivar = 0; // << tear down self
[super dealloc]; // << tear down super
例B:
工事:
- (void)viewWillAppear:(BOOL)pAnimated
{
[super viewWillAppear:pAnimated]; // << call through super first
// now set up self
...
破壊:
- (void)viewDidDisappear:(BOOL)pAnimated
{
// tear down self
[super viewDidDisappear:pAnimated]; // << now tear down super