iOS 程序基本知识

第一、程序的入口和生命周期

每个程序都有一个main.m这个类,内部有一个main方法,而这个方法我们看到和C语言中的main函数形式是一致的,入口就在这里,那么这里干了一件事就是托付应用程序的代理对象AppDelegate类,也就是把整个应用程序的逻辑都托付给了AppDelegate类,在iOS中这种方式叫做代理,然后UIApplicationMain类就会和AppDelegate类进行交互,比如应用的生命周期,事件处理等。

在这个AppDelegate类中我们可以看到很多时机的回调方法,这个就是和应用的生命周期方法相关联的,下面就来一一分析这些方法的回调时机:

1、告诉代理启动基本完成程序准备开始运行
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2、告诉代理进程启动但还没进入状态保存
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
3、当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
- (void)applicationWillResignActive:(UIApplication *)application
4、当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
- (void)applicationDidEnterBackground:(UIApplication *)application
5、当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反
- (void)applicationWillEnterForeground:(UIApplication *)application
6、当应用程序入活动状态执行,这个刚好跟上面那个方法相反
- (void)applicationDidBecomeActive:(UIApplication *)application
7、当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application
8、当应用接收到内存警告回调方法
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application



第二、四大对象关系
一个iOS程序中非常重要的四个对象:UIApplicationDelegate,UIWindow,UIViewController,UIView

1、UIAppDelegate类
这个类主要是用来管理应用的生命周期和一些事件的回调方法,每个应用都将有一个这个类。
2、UIWindow类
这个类主要是用来展示应用UI界面的窗口,他其实是一个特殊的UIView,可以像操作控件一样来操作它,而每个应用都有一个唯一的主窗口,也就是UIAppDelegate类中的window属性值。
3、UIViewController类
这个类相当于管理应用中每个页面的功能类,他和Android中的Activity非常类似,而一个应用一般都是会包含多个控制器的,但是一定有一个根控制器,这个控制器一般要设置到UIWindow的rootViewController属性值中。同时每个控制器如果要用代码布局,就在viewDidLoaded方法中进行添加,如果要用xib布局文件来操作,就需要手动的进行加载操作,使用控制器的initWithNibName:bundle:方法。
4、UIView类
其实这个类是iOS中每个控件的父类,但是每个控制器都有一个父View,这个就是UIView类,一般要设置到UIViewController的view属性值中的。


第三、UIViewController生命周期方法的调用顺序
1> view初始化完毕后,就会调用控制器的viewDidLoad方法
2> view初始化完毕后,就会把这个根控制器的view添加到窗口中
3> 当view即将被添加到窗口中时,就会调用控制器的viewWillAppear:方法
4> 当view已经被添加到窗口中时,就会调用控制器的viewDidAppear:方法
5> 如果控制器的view即将从窗口中移除时,就会调用控制器的viewWillDisappear:方法
6> 如果控制器的view已经从窗口中移除时,就会调用控制器的viewDidDisappear:方法
7> 如果控制器接收到内存警告的时候,就会调用控制器的didReceiveMemoryWarning方法
didReceiveMemoryWarning方法的默认实现是:如果控制器的view没有显示在窗口中,也就是说controller.view.superview为nil时,系统就会销毁控制器的view.
8> 销毁完毕后会调用控制器的viewDidUnload方法
9> 如果控制器的view以前因为内存警告被销毁过,现在需要再次访问控制器的view时,会重复前面的步骤初始化view。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值