私の1人には、UIViewController
いくつかの子ViewControllerがあります。それらは、左側の「オブジェクト」セクションにドラッグして、 「カスタムクラス」としてNSObject
自分のものに入れることにより、インターフェイスビルダー内に構築されます。SpecialViewController
この設定でviewDidLoad
、ビューとコントローラーの準備が整います。ワークフローは、次のスクリーンショットで示されています。
そして私の実装では、私は持っています:
@interface ParentController : UIViewController
{
SpecialViewController *svc;
}
@property (nonatomic, retain) IBOutlet SpecialViewController *svc;
私が理解しているようにdidReceiveMemoryWarning
、私は自分のリソースを解放する必要があります。次にIBOutlets
、の間にnilに設定しviewDidUnload
ます。
シミュレーターで低メモリをシミュレートするとクラッシュが発生し、デバッガーはdidReceiveMemoryWarning
of SpecialViewController
(本体はちょうど[super didReceiveMemoryWarning];
)で一時停止し、エラーが発生しますEXC_BAD_ACCESS (code=1, address=0xe0000008)
。現時点では、親コントローラーは表示されていないため、安全に解放できます。
親コントローラーには、にのみ含ま[super didReceiveMemoryWarning];
れdidReceiveMemoryWarning
ます。私はIBOutlets
両方のクラスでnilingを試しました。それは役に立たなかった。
なぜこれが起こったのか考えていますか?
ARCでiOS4と5をターゲットにしています。SpecialViewController
のサブクラスですUITableViewController
。
トレースを通して、私はそれParentController didReceiveMemoryWarning
が前に呼び出されていることを発見しましたSpecialViewController
。