ios程序具有完整的生命周期,当用户点击图标的时候,会通过函数入口main开始程序,也就是项目中的main.m文件中的UIApplicationMain 方法,这个时候,会创建一个UiApplication的实例有且只有一个(单例),UiApplication象征着整个程序,然后会创建一个UiApplication的代理对象delegate,再开启一个消息循环监听系统事件,如果监听到某一个动作就会给代理发送消息。
/*第三个参数 应用程序象征的类名 只能传uiapplication或其子类,若为空,默认就是uiapplication对象*/
/*第四个参数uiapplication代理*/
return UIApplicationMain(argc, argv, nil, NSStringFromClass([cooljuneAppDelegate class]));
四大对象之间的关系:
UiApplication代理中常用方法
didFinishLaunchingWithOptions | 加载完毕(只调用一次) |
applicationWillResignActive | 失去焦点 |
applicationDidEnterBackground | 进入后台时调用 |
applicationWillEnterForeground | 进入前台 |
applicationDidBecomeActive | 获取焦点 |
applicationWillTerminate | 程序被关闭(且还能监听程序运行,播放器) |
项目中常见文件的解释:
*-info.plist 项目中最主要的文件,描述的了名次软件版本唯一标识,也可以在summary中设置,其实就是修改这个plist文件
CFBundleDisplayName app名次
CFBundleVersion 版本号
UIMainStoryboardFile 加载后
CFBundleIdentifier 软件唯一标识
-Prefix.pch 默认情况下项目中所有文件都已经包含该文件
自定义自己的log函数
#ifdef DEBUG
//调试状态
#define MyLog(...) NSLog(__VA_ARGS__)
#else
//打包发布
#define MyLog(...)
#endif
application.statusBarHidden=NO; 隐藏状态栏
运行过程
view加载是采用延时加载的机制,用到的时候再加载,用到view的时候会调用loadview方法加载过程,loadview加载完成后才会调用viewDidLoad
如果nibName有值,就会加载对应的xib文件来创建view
如果nibName没有值
1.首先会寻找和控制器同名的*.xib文件来创建view
2. 加载*.viewcontroller.Xib文件
3.如果没有xib文件,就会用代码创建一个黑色的view