何时调用 viewDidLoad?

Posted

技术标签:

【中文标题】何时调用 viewDidLoad?【英文标题】:When is viewDidLoad called? 【发布时间】:2010-10-16 17:24:27 【问题描述】:

假设chatViewController 的一个属性,即fetchedResultsControllerUITableViewController 的子类的一个实例,在调用viewDidLoad 时始终为nil,假设它设置为@,是否安全? 987654326@ 在viewDidUnload?呸!

如果是这样,那么我认为没有必要像 Xcode 示例应用程序 CoreDataBooks 中那样立即重新定义访问器函数。我宁愿把所有代码都放在viewDidLoad 中,而不是放在单独的函数中,因为这是我唯一会用到它的地方。

【问题讨论】:

【参考方案1】:

viewDidLoad 在你的视图被加载后被调用。 fetchedResultsController 是否为 nil 取决于 viewController 的初始化方式。例如,在创建detailViewController 时,您可以在调用viewDidLoad 之前设置它的fetchedViewController

RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
detailViewController.fetchedResultsController = fetchedResultsController;

[self.navigationController pushViewController:detailViewController animated:animated];
[detailViewController release];

也就是说,在 viewDidUnload 中将 fetchedResultsController 设为 nil 将确保它为 nil。

【讨论】:

酷。谢谢。我想你的最后一句话已经回答了我的问题。很高兴知道! :)【参考方案2】:

在这些Secnarion中调用了ViewDidLoad:-

1.当我们通过segue或stoary board id创建对象后推送视图控制器时。

2.在应用程序中创建实例更多时间并一次又一次推送它的情况下,它调用了多个。例如:-如果您像 coaursal 那样实现(在滚动期间需要额外的控制器),那就需要了所以它可以多次调用viewDidLoad。

3.它在所有内存实例(uiviewcontroller 及其子类实例化)时调用,这意味着当我们的视图准备好将地址加载到内存中时。

4.记住只有子类控制器对象被创建..父类对象在正常Secnarion期间从未被实例化。

【讨论】:

【参考方案3】:

您必须假设 viewDidLoad 可以被多次调用。如果发送了内存警告,您的视图控制器将从内存中卸载视图,并在下次需要时调用 viewDidLoad。

【讨论】:

明确一点,viewDidLoad 不会被连续多次调用。 这是有道理的。所以,我可以假设如果我在viewDidLoadnil 中设置fetchedResultsControllerviewDidUnload 中,那么我不会在viewDidLoad 中不必要地再次设置它?换句话说,viewDidUnload 总是在另一个调用 viewDidLoad 之前被调用,对吗?【参考方案4】:

viewDidLoad 仅在第一次实例化视图时调用。如果您没有在应用程序中每次都重新创建视图控制器,那么您只会调用一次(如果您收到内存警告,则再次调用它,并且视图为零)。

【讨论】:

以上是关于何时调用 viewDidLoad?的主要内容,如果未能解决你的问题,请参考以下文章

IOS 查看代表以及何时调用它们

UIImagePickerController 在调用 alloc init 时真的很慢

何时使用 viewDidLoad 以及何时使用 awakeFromNib

视图控制器何时触发其前身 viewDidLoad?

约束更新后,UIView的边界何时发生变化?

splitViewController 中的最终位置何时结束?