gpt4 book ai didi

ios - UIViewController viewDidLoad 在 init 方法完成之前调用

转载 作者:行者123 更新时间:2023-11-29 04:53:15 24 4
gpt4 key购买 nike

我有一个 View Controller ,它初始化另外两个 View Controller 。一个 Controller 的 View 没有显示,我跟踪问题到实例在添加到 super View 时为零。

这是代码。 viewDidLoad 在 favoritesTableVC 初始化之前被调用。我可以通过在 resultsTableVC 和 favoritesTableVC View Controller 的初始化方法中放置断点来看到这一点。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
resultsTableVC = [[[ResultsTableVC alloc] initWithController:self andTableView:nil] retain];
favoritesTableVC = [[[FavoritesTableVC alloc] initWithFrame:CGRectMake(0, 10, self.view.frame.size.width, defaultFavoritesTableHeight) andController:self] retain];
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

[self.view addSubview:resultsTableVC.view];
[resultsTableVC release];
[self.view addSubview:favoritesTableVC.view];
[favoritesTableVC release];
}

以下是调用方法的顺序:

  • 所有结果初始化
  • 结果TableVC初始化
  • allResults viewDidLoad
    • addSubview allResultsVC
    • addSubview favoritesResultsVC
  • favoritesResultsVC 初始化

这是一个单线程,所以我不明白在init完成之前如何调用viewDidLoad。

最佳答案

-[ResultsTableVC initWithController:andTableView:] 可能正在引用 allResults.view。

这将强制 allResults Controller 加载其 View (这当然会导致 viewDidLoad 触发)。所有这些都是同步发生的,在您实际从 initWithController:andTableView 返回之前:

关于ios - UIViewController viewDidLoad 在 init 方法完成之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com