【发布时间】:2012-02-23 02:38:18
【问题描述】:
我正在努力弄清楚如何正确设置我的视图控制器以优雅地处理内存警告。
目前,每当应用收到内存警告时,我都会从导航控制器堆栈中更靠后的视图中收到 EXC_BAD_ACCESS 崩溃。
我的表格视图发生了错误的访问。这是我实例化它的方式:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
UITableView *table = [[[UITableView alloc] initWithFrame:CGRectMake(self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.size.width, self.view.bounds.size.height - self.navigationController.navigationBar.bounds.size.height) style:UITableViewStyleGrouped] autorelease];
table.dataSource = self;
table.delegate = self;
self.tableView = table;
[self.view addSubview:table];
[table release];
...other stuff...
}
这是我的 viewDidUnload:
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.tableView = nil;
}
出现内存警告时,按预期调用 viewDidUnload,但我在 self.tableView = nil 行上遇到 EXC_BAD_ACCESS 崩溃。
我是否在错误的位置设置了我的 tableView?我没有使用 nib 文件,所以我应该在其他地方构建它吗?我是否以某种方式错误地将其传递给视图控制器?等等等等
任何帮助将不胜感激。我还没有理解内存警告时发生的事件顺序,而 1 级内存警告似乎非常常见。
【问题讨论】:
标签: iphone ios memory-management exc-bad-access