6

假设一个属性,即fetchedResultsControllerchatViewController子类的实例UITableViewController,总是nil在何时viewDidLoad被调用,假设它被设置为nilin ,是否安全viewDidUnload?呸!

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

4

4 回答 4

3

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

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

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

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

于 2010-10-16T20:22:15.237 回答
3

ViewDidLoad 在这些 Secnarion 中调用:-

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

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

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

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

于 2015-07-28T10:59:15.120 回答
2

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

于 2010-10-16T18:03:34.390 回答
0

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

于 2016-07-13T19:44:38.800 回答