Iphone:哪里为dataSource分配内存?

时间:2011-01-11 15:05:34

标签: iphone memory-management

我有一个用于填充UITableView的数组。

问题是我应该为它分配内存。我在viewDidLoad或viewWillAppear中有两个选项,但从内存管理的角度来看,我不知道哪个更有效。

由于

编辑:

我创建视图执行以下操作:

NextViewController *nextController = [[ReservationsViewController alloc] initWithNibName:@"NextViewController" bundle:nil];
nextController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];

但我不希望每次显示时都分配内存,只是第一次加载视图才能从内存管理的角度来看是正确的。

3 个答案:

答案 0 :(得分:1)

如果您只希望分配一次,那么您应该在init方法或awakeFromNib中分配它,具体取决于视图控制器的创建方式。

viewWillAppear可能会被多次调用,并且不能保证viewDidLoad只被调用一次。

答案 1 :(得分:0)

如果数组是属性,只需在dealloc中释放它,如下所示:

- (void)dealloc {
  [someArray release];
  [super dealloc];
}

如果由于某种原因你转而在viewDidLoad或viewWillAppear方法中创建一个本地数组,请确保在完成后立即释放它。

答案 2 :(得分:0)

如果在viewDidLoad方法中分配内存,则仅在视图加载到内存时才会执行。如果您在viewWillAppear中执行此操作,则每次视图可见时都会执行此操作。