私のUIViewController
には複数の子ビューコントローラがあります。それらはインターフェイスビルダー内に組み込まれています。NSObject
を左側のオブジェクトセクションにドラッグして、自分のSpecialViewController
を「カスタムクラス」とします。この設定では、viewDidLoad
に私のビューとコントローラを準備します。ワークフローは次のスクリーンショットによって提案された:正しく処理しましたdidReceiveMemoryWarning
そして、私の実装では、私が持っている:
@interface ParentController : UIViewController
{
SpecialViewController *svc;
}
@property (nonatomic, retain) IBOutlet SpecialViewController *svc;
私はdidReceiveMemoryWarning
時に私は自分のリソースを解放する必要があることを理解しています。次にviewDidUnload
の間にIBOutlets
をnilに設定します。
シミュレータでメモリ不足をシミュレートするとき、私は、デバッガがエラーEXC_BAD_ACCESS (code=1, address=0xe0000008)
と、(そのボディだけ[super didReceiveMemoryWarning];
です)SpecialViewController
のdidReceiveMemoryWarning
で一時停止し、クラッシュを取得します。現時点では、親コントローラは表示されないため、安全に解放することができます。
親コントローラには、[super didReceiveMemoryWarning];
も含まれます。didReceiveMemoryWarning
です。私はどちらのクラスでもIBOutlets
を試しました。それは助けになりませんでした。
これはどうして起こったのでしょうか?
私は、ARCを使用してiOS 4 & 5をターゲティングしています。 SpecialViewController
はUITableViewController
のサブクラスです。
トレースすると、ParentController didReceiveMemoryWarning
がSpecialViewController
の前に呼び出されました。
リリースオブジェクトとセットオブジェクトがnilに等しくない。もしあなたがメモリ警告を受け取ったら、未使用**のリソースを解放する必要があります。 '[svc release]'を最初に試してください。 – Feo
@Feo、Hmm ...私はARCを使用しています。私は未使用のリソースをリリースしました。それらは私が自分のクラスで管理しているものです、正しい? –
あなたは 'self.scv = nil'をやっていますか? – Peres