问题:
我用 nslog 检查每个视图以检查视图是否已释放,detailViewController 永远不会释放,一段时间后我收到内存警告,唯一调用的是 ViewDidUnload。
视图是如何调用的以及将哪些项目推送给它
该视图被调用并推送到一个表中,在 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 中有什么我在 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