IOS [UITableView reloadData] vs ViewWillAppear父类的UITableView类的新实例

时间:2013-04-25 05:31:53

标签: ios viewdidload reloaddata viewwillappear

我是iOS编程的新手,我创建了我的第一个iPad应用程序,它可以处理多个视图。 因为我不知道如何管理内存和对象(应用程序没有崩溃,但我试图阻止它们)我有这个问题。

一般来说,导航到子视图并返回父视图或父视图的父视图时,更好地更新视图信息,等等:

选项1 在Parent viewWillAppear方法上实例化Child控制器

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.supportDetailController = [[BIDSupportDetail alloc] init];
}

选项2 在viewDidLoad Parent方法上实例化子控制器和子viewWillAppear方法调用[self.tablewView reloadData]

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.supportDetailController = [[BIDSupportDetail alloc] init];
}

儿童

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.tablewView reloadData]
}

我正在使用iOS 6.1和Xcode 4.6.2

2 个答案:

答案 0 :(得分:0)

如果您不确定内存管理,请使用 ARC 。在实际需要时实例化子视图控制器。如果它是一种导航,则无需在viewDidLoadviewWillAppear中对其进行实例化。假设您有一个表格视图,当您选择一个单元格时导航到DetailViewController(正常情形),然后从didSelectRowAtIndexPath初始化并显示详细视图控制器。 通常,childVC的viewWillAppear中的 reloadTableView 不需要在parentVC中用于在返回时刷新视图的方式,仅使用它是必需的,因为它的成本很高时间。

答案 1 :(得分:0)

如果我理解正确,您希望在孩子做某事时更新您的父母。例如:

  1. 父亲拥有Bars的列表,这些列表显示在UITableView
  2. 孩子可以创建Bar
  3. 当您创建Bar并返回父级时,家长会在UITableView上显示。
  4. 在这种情况下,我更愿意不依赖于父级中的viewWillAppearviewDidAppear。我通常使用孩子内部的Protocolweak引用创建从父级到子级的引用。因此,当您需要实际更新父级时,只需将新创建的对象传递给父级。