对于iOS开发者,需要熟悉一些基本概念,虽然有时候我们并不会用打他们。一下的一些记录,有自己总结的,也有来源于网络的,虽然并不全面,以后有机会就补充吧。

iOS的main函数

如同任何基于C的应用程序,程序启动的主入口点都应该是main函数。虽然我们很少动它,但是应该懂它,它的主要工作是控制UIKit framework的。


int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil,
            NSStringFromClass([AppDelegate class]));
    }
}

UIApplicationMain 函数有四个参数,主要是控制程序进程和加载各种资源

  • argc和argv:是ISO C标准的main函数的参数,参数包含应用程序何时从系统启动等信息等。
  • principalClassName:这个参数标识了应用程序的类的名称(该类必须继承自UIApplication类)。这是负责运行应用程序的类。一般这个参数传nil,此时,它的值将从Info.plist中获取,如果Info.plist中没有,则默认为UIApplication
  • delegateClassName:是应用程序类的代理类。应用程序的代理负责管理系统和你的代码之间的高层次的互动。 一般默认为Xcode自己帮我们创建的[AppDelegate class]。

程序启动时 运行的先后顺序 与 事件处理


//1,在程序启动过程中 一定会走的方法
//检查启动选项字典中的内容,查看程序启动的方式,并做出适当的反应。
//初始化应用程序的关键数据结构
//准备好你的应用程序的窗口和视图进行显示
- (BOOL)application:(UIApplication *)application
    willFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

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

//2,创建window窗口

//3,当程序被激活
- (void)applicationDidBecomeActive:(UIApplication *)application;

//其他进入后台 取消激活等都是常用方法,就不多说了
applicationDidEnterBackground:
applicationWillEnterForeground:
applicationWillResignActive:
applicationDidBecomeActive:


UIViewController的生命周期


//UIViewController的指定初始化方法
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

//加载视图  通常这一步不需要去干涉
- (void)loadView;

//视图加载完成
- (void)viewDidLoad;

//出现内存警告
//模拟内存警告:点击模拟器->hardware-> Simulate Memory Warning
- (void)didReceiveMemoryWarning;

//视图将要出现
- (void)viewWillAppear:(BOOL)animated;

//视图已经出现
- (void)viewDidAppear:(BOOL)animated;

//视图将要消失
- (void)viewWillDisappear:(BOOL)animated;

//视图已经消失
- (void)viewDidDisappear:(BOOL)animated;

//销毁
- (void)dealloc;


alloc 和 init

alloc 创建对象,分配空间;

init (initWithNibName) 初始化对象,初始化数据;