2013-04-25 73 views
0

我是iOS編程的新手,我創建了我的第一個處理多個視圖的iPad應用程序。 因爲我不知道如何管理內存和對象(應用程序沒有崩潰,但我試圖阻止它們)我有這個問題。iOS [UITableView reloadData] vs ViewWillAppear父類上的那個UITableView類的新實例

總的來說這是更好地對導航到子視圖時,並返回到父母或父母的父母等的意見更新信息:

選項1 實例化父viewWillAppear方法兒童控制器

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

選項2 實例化的viewDidLoad中父方法子控制器和對兒童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

回答

0

如果您不確定內存管理的使用情況,請使用ARC。在實際需要時實例化子視圖控制器。如果是導航類型,則不需要在viewDidLoadviewWillAppear中實例化它。假設你有一個表格視圖,並且當你選擇一個單元格時,導航到DetailViewController(一個正常的場景),然後初始化並顯示來自didSelectRowAtIndexPath的詳細視圖控制器。
通常情況下reloadTableViewviewWillAppear的childVC並不需要通過它在父VC中用於刷新視圖的方式返回時只使用它,因爲它在時間上是昂貴的。

0

如果我理解正確,當孩子做某事時,你想更新你的父母。例如:

  1. 父母有Bars的列表,這些列表顯示在UITableView上。
  2. 孩子允許你創建一個Bar
  3. 當您創建Bar,並且您回到父級時,父級會將其顯示在UITableView上。

在這種情況下,我更喜歡不要依靠母公司的viewWillAppearviewDidAppear。我通常通過在孩子內部使用Protocolweak引用來創建父母對孩子的引用。因此,當您需要實際更新父級時,只需將新創建的對象傳遞給父級。

+0

嗨,不是真的,我想更新孩子,當父母在他的UITableView中選擇一行。但我真的不知道是否最好的方法是每次我去孩子時創建一個新的實例或保留1個實例並重新加載數據。 – Symphonicmind 2013-04-25 15:18:28