加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xcode – 为什么我的应用委托的didFinishLaunchingWithOptions方

发布时间:2020-12-15 01:43:34 所属栏目:百科 来源:网络整理
导读:我一直在使用Xcode中的iPad的SplitView模板.以下是基于拆分视图的应用程序模板为您自动生成的许多重要方法中的两个… AppNameAppDelegate.m #pragma mark -#pragma mark Application lifecycle- (BOOL)application:(UIApplication *)application didFinishLa
我一直在使用Xcode中的iPad的SplitView模板.以下是基于拆分视图的应用程序模板为您自动生成的许多重要方法中的两个…

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();
    }
}

在进行任何更改之前构建并运行项目时,在调用RootViewController:viewDidLoad方法之前调用application:didFinishLaunchingWithOptions方法.我是iPhone开发的新手,但我认为这是正确和典型的序列.所以这是我所做的改变……

>一旦我确认一切正常工作而没有任何修改,我更改了RootViewController代码并将其设置为UIViewController的子类(默认情况下代替UITableViewController)并在Interface Builder中进行相应的调整.我建立并运行,一切仍然正常.
>然后,我在IB中的RootView中添加了一个UIView(其中没有任何内容),当我构建并运行它时,突然在应用程序之前调用了RootViewController:viewDidLoad:didFinishLaunchingWithOptions方法.

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

>任何想法是什么造成的?
>任何想法如何解决这个问题?

非常感谢您的帮助!我会继续研究和玩代码.

解决方法

在模板应用程序中-applicationDidFinishLaunching将RootViewController的视图添加到窗口,导致视图加载,所以很明显-viewDidLoad将跟随 – applicationDidFinishLaunching.

从ApplicationDidFinishLaunching(间接)调用ViewDidLoad.

如果正如你所说的那样,在applicationDidFinishLaunching之前调用viewDidLoad是因为你在调用applicationDidFinishLaunching之前已经做了一些事情来导致视图加载.

您是否在-viewDidLoad中添加了断点并查看堆栈跟踪以查看负责调用它的内容?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读