私はUIViewControllerサブクラスをナビゲーションスタックにプッシュしています。しかし、それはnavigationControllerによって保持されているので、スタックにプッシュした後でポインタを解放して、最終的にポップされたときにviewControllerが解放されるようにします。新しいARCメモリ管理でUIViewControllerが解放されない
しかし、動作していないので、viewControllerのdeallocメソッドは呼び出されません。コードは次のようなものになります。でも、次のコードで
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
[self.navigationController pushViewController:newViewController animated:YES];
newViewController = nil;
を、私newViewControllerはdeallocを-EDされていません。
MyViewController *newViewController =
[self.storyboard instantiateViewControllerWithIdentifier:@"foo"];
newViewController = nil;
私が理解から、新しい自動参照カウント(ARC)の下でシステムでは、オブジェクトはそれが何も指していなければ解放されます。私は作成されているviewControllerのdeallocメソッドにNSLogメソッドを追加しますが、呼び出されることはありません。
ここでは何が欠けていますか?スタックオーバーフローの私の最初の記事を読むための
感謝:)
** EDIT:**
私は謝罪。私はautoreleaseプールに包まれたコードの2番目の部分を試して、それは割り当て解除されました。私はその後、自動解放プールなしでそれを試して、それも適切に割り当てを解除しました。私は昨夜何が起こったのか分からない。
(第二編集:そして今、その再び動作を停止しfffffffuuuuuuuuuuuu)
ARCはまだテスト中ですので、まだいくつかのバグがある可能性があります。 –
instantiateViewControllerWithIdentifierは自動解放オブジェクトを返しますか?すなわち返される前に 'autorelease'メッセージが送られたものですか? – freespace
NSTimerのターゲットはviewcontrollerですか? ARCの下では、タイマーはターゲットを保持したまま無効にする必要があります。 – jsz