2011-01-11 73 views
0

我有一個數組用於填充UITableView。Iphone:在哪裏爲dataSource分配內存?

問題是我應該在哪裏爲它分配內存。我在viewDidLoad或viewWillAppear中有兩個選項,但我不知道從內存管理的角度來看哪裏更高效。

感謝

編輯:

我創建視圖執行以下操作:

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

但我不想分配內存,每次顯示,僅在第一次的看法被加載是爲了從內存管理的角度來說是正確的。

+0

在哪裏分配數組?這是一個財產嗎? – 2011-01-11 15:08:27

+0

是的,這是一個屬性 – xger86x 2011-01-11 15:08:53

回答

1

如果您只希望它被分配一次,那麼您應該在init方法或awakeFromNib中分配它,具體取決於您的視圖控制器的創建方式。

viewWillAppear可能會被多次調用,並且viewDidLoad不保證只被調用一次。

+0

我編輯我的問題。我不想泄漏內存,如果我分配viewwillAppear或viewDidLoad。那麼正確的方法是什麼? – xger86x 2011-01-11 15:16:04

0

如果數組是一個屬性只是釋放它的dealloc中像這樣:

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

如果由於某種原因,你切換到創建在viewDidLoad中或viewWillAppear中方法的本地陣列確保您儘快釋放如你所做的那樣。

0

如果您在viewDidLoad方法中分配內存,則只有在視圖加載到內存時纔會執行內存分配。如果你在viewWillAppear中這樣做,每當視圖變得可見時你都會這樣做。