iOS开发-APP启动时所有方法的调用顺序

2018-06-30  本文已影响12人  Jorunk

希望有一天可以解决这里面的所有问题

应用程序的启动过程

本文考虑的时步骤③之后到步骤⑦结束时将要调用的方法

其中有AppDelegate,ViewController,MainView(控制器的View),ChildView(子控件的View)的18个方法

AppDelegate中的:
ViewController中的:
MainView(控制器的View)中的:
ChildView(子控件View)中的:

对各个方法的整理

+ (void)load;
+ (void)initialize;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
ChildView - (instancetype)initWithCoder:(NSCoder *)aDecoder;
MainView - (instancetype)initWithCoder:(NSCoder *)aDecoder;
MainView - (void)awakeFromNib;
ChildView - (void)awakeFromNib

- (void)loadView;

if(_view == nil){

_view = [self loadView]

}

所以这么写会直接造成死循环。

如果重写这个loadView方法里面什么都不写,会显示黑屏。

如果写了[super view]还要看前面的控制器在创建时是写的initWithNibName(指定了xib名字),还是写的普通的init。 如果是后者还是黑屏。

如果不在这个方法中,init的底层是会调用initWithNibName的,如果名字是MainViewController,会先在项目中找MainView.xib 找不到会再找MainViewController.xib。

- (void)viewDidLoad;

- (void)viewWillAppear:(BOOL)animated;

viewWillTransitionToSize:可能要在本方法里再调一次,或者就是新到这个界面要reloadData或是自动下拉刷新等 都是写在本方法里。

- (void)viewWillLayoutSubviews;
MainView - (void)layoutSubviews;
- (void)viewDidLayoutSubviews;
ChildView - (void)layoutSubviews;
MainView - (void)drawRect:(CGRect)rect;
ChildView - (void)drawRect:(CGRect)rect;

- (void)viewDidAppear:(BOOL)animated;

- (void)applicationDidBecomeActive:(UIApplication *)application;

参考董铂然博客园

上一篇 下一篇

猜你喜欢

热点阅读