0

問題:

すべてのビューを nslog でチェックして、ビューが割り当て解除されているかどうかを確認します。

ビューはどのように呼び出され、どのアイテムがそれにプッシュされますか

ビューが呼び出され、テーブルにプッシュされます。detailViewController には、次の searchResult があります。

@property (nonatomic,weak) SearchResult *searchResult;

呼び出される detailViewController は次のとおりです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

DetailViewController *controller = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];

SearchResult *searchResult = [search.searchResults objectAtIndex:indexPath.row];
controller.searchResult = searchResult;
[self.navigationController pushViewController:controller animated:YES];

//made a property with (nonatomic,weak) DetailViewController and set it to the    controller
self.detailViewController = controller;
}

detailViewController はどのように破棄されていますか

-(void)back:(UIButton *)sender{


[self.navigationController popViewControllerAnimated:YES];

}

私が問題だと思うのは

私はちょうど推測しています..私はdetailViewControllerでいくつかのものを割り当てるいくつかの関数を割り当てますが、私が戻った場合、これらのものは自動的に正しく解放されますか? それは保持されているものでなければなりませんが、detailViewController でこれらのプライベート プロパティが次のようなものを持っているのかわかりません。

@property (nonatomic, retain) iCarousel *carousel;
@property (nonatomic, retain) UINavigationItem *navItem;

しかし、私がビューの外に出た場合、どうすればこれらのオブジェクトを解放できますか? それともこれが問題ではないですか?

アップデート:

私が押し戻すとき:

NSLog(@"%@", [self navigationController]);
[self.navigationController popViewControllerAnimated:NO];
NSLog(@"%@", [self navigationController]);

ログ:

2013-01-13 19:33:30.703 App[21683:707] <UINavigationController: 0xfeafbf0>
2013-01-13 19:33:30.705 App[21683:707] (null)

ARCを使用しています

4

2 に答える 2

0

このメソッドで以前に割り当てられたので、格納controllerした後、コントローラーを解放する必要があります。self.detailViewControllerしたがって、コードは次のようになります

self.detailViewController = controller;
[controller release];
于 2013-01-14T13:57:05.987 に答える
0

おそらく、detailViewController への強力な参照がいくつかあるでしょう。

didSelectRow メソッドで。このコードで強い参照を作成しています:

self.detailViewController = controller;

detailViewController がポップされた後、またはメモリ警告が表示されたら、設定するだけです

self.detailViewController = nil;

これが機能しない場合は、他のコードをチェックして、他の強い参照を作成しているかどうかを確認するか、detailViewController が呼び出し元のビュー コントローラーへの強い参照を持っている可能性があるループを保持してください。

幸運を

于 2013-01-13T16:51:17.890 に答える