gpt4 book ai didi

xcode - 为什么我的应用程序委托(delegate)的 didFinishLaunchingWithOptions 方法在我的 RootViewController :viewDidLoad method? 之后突然被调用

转载 作者:行者123 更新时间:2023-11-30 13:33:02 25 4
gpt4 key购买 nike

我一直在 Xcode 中使用 iPad 的 SplitView 模板。以下是基于分割 View 的应用程序模板为您自动生成的许多重要方法中的两个...

AppNameAppDelegate.m

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after app launch
rootViewController.managedObjectContext = self.managedObjectContext;


// Add the split view controller's view to the window and display.
[window addSubview:splitViewController.view];
[window makeKeyAndVisible];

return YES;
}

RootViewController.m

#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {

[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);

NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {

NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}

当您在进行任何更改之前构建并运行项目时,application:didFinishLaunchingWithOptions方法在 RootViewController:viewDidLoad 之前调用方法被调用。我是 iPhone 开发新手,但我假设这是正确且典型的顺序。这是我所做的更改...

  • 一旦我确认一切正常,无需任何修改,我就更改了 RootViewController 代码并将其设置为 UIViewController 的子类。 (而不是默认的 UITableViewController)并在 Interface Builder 中进行相应的调整。我构建并运行,一切仍然运行良好。
  • 然后,我向 IB 中的 RootView 添加了一个 UIView(其中没有任何内容),当我构建并运行它时,突然出现 RootViewController:viewDidLoadapplication:didFinishLaunchingWithOptions 之前被调用方法。

我需要让它恢复到之前的工作方式,因为正如您在代码中看到的,viewDidLoad 方法依赖于 didFinishLauchingWithOptions 方法来执行,因此它可以设置 rootViewController 的 managedObjectContext它用于执行获取请求。

  1. 您知道是什么原因造成的吗?
  2. 有什么办法可以解决这个问题吗?

预先非常感谢您的帮助!我将继续研究和使用代码。

最佳答案

在模板应用程序中 -applicationDidFinishLaunching 将 RootViewController 的 View 添加到窗口,导致 View 加载,因此显然 -viewDidLoad 将跟随 -applicationDidFinishLaunching。

ViewDidLoad(间接)从 applicationDidFinishLaunching 调用。

如果如您所说,viewDidLoad 在 applicationDidFinishLaunching 之前被调用,那是因为您在调用 applicationDidFinishLaunching 之前做了一些操作导致 View 加载。

您是否在 -viewDidLoad 中添加了断点并查看堆栈跟踪以了解调用它的原因?

关于xcode - 为什么我的应用程序委托(delegate)的 didFinishLaunchingWithOptions 方法在我的 RootViewController :viewDidLoad method? 之后突然被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36372189/

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