UITableViewController、UITableView & UIPopoverController 的内存管理



我试图找出在以下实现上执行内存管理的最佳方法:

我有一个UIPopoverController它会在视图的viewDidLoad时被创建只有在viewDidUnload时才会消失

在UIPopoverController中,我显示了一个UITableView

这是我目前在。h中的实现:

UIPopoverController *aPopoverController;
@property (nonatomic, retain) UIPopoverController *aPopoverController;
在m

:

@synthesize *aPopoverController;

在.m中的方法内部,当viewDidLoad:

UITableViewController *aTableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 800)];
aTableViewController.tableView = aTableView;
aTableView.delegate = self;
aTableView.dataSource = self;
aPopoverController = [[UIPopoverController alloc] initWithContentViewController:aTableViewController];

我应该如何释放这些对象时viewDidUnload?

请随意在此代码之后发布aTableViewaTableViewController

更具体地说,UITableViewController保留了表视图,所以你不需要再保留它,UIPopoverController保留了内容视图控制器,所以你可以释放aTableViewController一旦你传递给弹出窗口控制器。

-viewDidUnload你的弹出窗口控制器被释放,它释放表视图控制器,然后释放表视图。就这么简单。

我想这样写:

UITableViewController *aTableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 100, 800)];
aTableView.delegate = self;
aTableView.dataSource = self;
aTableViewController.tableView = aTableView;
[aTableView release];
aPopoverController = [[UIPopoverController alloc] initWithContentViewController:aTableViewController];
[aTableViewController release];

最新更新