0
我想知道如何在使用ARC時編寫我的- tabliView:didSelectRowAtIndexPath:
方法。Cocoa-Touch - 使用ARC時的pushViewController
弧我這樣做:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.addContactsVC == nil) {
self.addContactsVC = [[AddContactsViewController alloc] initWithNibName:nil bundle:nil];
}
[self.navigationController pushViewController:self.addContactsVC animated:YES];
}
什麼我不知道的是,難道是我保存視圖控制器類變量太多的開銷。我認爲,如果每次我想推入視圖控制器時都可以重用視圖控制器,而不是每次分配一個新視圖控制器時都是「良好實踐」
也許我應該只是做代替?:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AddContactsViewController *addContactsVC = [[AddContactsViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:addContactsVC animated:YES];
}
保存視圖控制器的另一個原因是,如果您希望在彈出和推送視圖控制器時能夠保持視圖控制器的當前狀態。 –
@PeterWarbo ..起初我以爲「嗯..沒想到那個」,然後我想「嗯國家應該在模型中」。不確定這些想法是否是確定性的。 –
好吧,像'NSString'這樣的模型對象被設置在被推入並彈出的視圖控制器中。如果我每次分配視圖控制器來推動它,那麼模型對象將是零,除非我重用相同的視圖控制器。 –