iOS从入门到精通---1.iOS开发App程序启动原理
2015-04-03 01:36
561 查看
前言:学习iOS开发是一件高大上的事情,但是再怎么高大上的事情,不付出努力,走马观花,始终都不会有什么收获,更不会有什么进步。要静下心来,慢慢学习,天天练习,把coding当做一件快乐有趣的事,而不是仅仅当做用来赚钱的工具,这样才能主动的去学习,才能有所收获,也有助于养成一个良好的心态!(写给大家,也写给自己)
----------------------------------------------------------------------
好的,废话少说,言归正传:
先看图,没图说个JJ
每次创建工程都有一大堆xcode默认创建的文件和文件夹,而我们平时都在这基础上直接创建各种viewController,然后哒哒哒的往下写,很少去理会这些默认创建的文件都是什么鬼有什么用,到头来也只是一知半解。
其他文件作用在这都不说了,网上一搜一大堆,今天主要剖析一下AppDelegate,总感觉这玩意儿很神秘有木有 ~ ~、
先忘掉xcode所创建的默认文件,按步骤来:
1.在HelloWorld启动过程中,首先调用main.m代码模块中的main()函数。(至于为什么调用main.m,我google了半天也没找到答案)
先看一下main.m中的内容:
一个Application(简称App)要想可以与用户交互,需要有一个 UIApplication 作为主体,接收各类 events,而且还要有一个 UIApplicationDelegate (UIApplication的代理)来处理所接收的events
。简单说,前者接收事件,后者处理事件。
所以,在main()函数中,int
UIApplicationMain(int argc,char
*argv[],NSString *principalClassName,NSString
*delegateClassName);函数中已经初始化了一个UIApplication(被苹果封装起来了,我们是看不到滴),所以这个还缺少一个代理,来处理UIApplication所接收的events,这时AppDelegate就大摇大摆的出来了。
2.看一下AppDelegate中的代码:
AppDelegate继承自UIResponder,并且遵守了<UIApplicationDelegate>协议
(咦,那如此说来,“AppDelegate”仅仅是一个类名,那它也可以起名为BppDelegate?
-------必须的啊,神秘感瞬间消失有木有)
UIResponder类使子类AppDelegate具有了处理相应事件(events)的能力,UIApplicationDelegate协议中有各种事件的回调:
UIApplicationDelegate协议中的部分方法如下:
这些方法会在应用生命周期的不同阶段会被调用。
程序执行步骤:程序启动 -> 执行main.m中的main()函数 -> 初始化UIApplication对象 并设置代理AppDelegate为其代理 -> AppDelegate接收事件回调
-> 然后就可以实现你自己的业务逻辑了
实际上:main.m中初始化了一个 UIApplication
对象 ,把AppDelegate设置为其代理来接收各种事件以供其驱使。
----------------------------------------------------------------------
好的,废话少说,言归正传:
先看图,没图说个JJ
每次创建工程都有一大堆xcode默认创建的文件和文件夹,而我们平时都在这基础上直接创建各种viewController,然后哒哒哒的往下写,很少去理会这些默认创建的文件都是什么鬼有什么用,到头来也只是一知半解。
其他文件作用在这都不说了,网上一搜一大堆,今天主要剖析一下AppDelegate,总感觉这玩意儿很神秘有木有 ~ ~、
先忘掉xcode所创建的默认文件,按步骤来:
1.在HelloWorld启动过程中,首先调用main.m代码模块中的main()函数。(至于为什么调用main.m,我google了半天也没找到答案)
先看一下main.m中的内容:
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
一个Application(简称App)要想可以与用户交互,需要有一个 UIApplication 作为主体,接收各类 events,而且还要有一个 UIApplicationDelegate (UIApplication的代理)来处理所接收的events
。简单说,前者接收事件,后者处理事件。
所以,在main()函数中,int
UIApplicationMain(int argc,char
*argv[],NSString *principalClassName,NSString
*delegateClassName);函数中已经初始化了一个UIApplication(被苹果封装起来了,我们是看不到滴),所以这个还缺少一个代理,来处理UIApplication所接收的events,这时AppDelegate就大摇大摆的出来了。
2.看一下AppDelegate中的代码:
AppDelegate继承自UIResponder,并且遵守了<UIApplicationDelegate>协议
(咦,那如此说来,“AppDelegate”仅仅是一个类名,那它也可以起名为BppDelegate?
-------必须的啊,神秘感瞬间消失有木有)
UIResponder类使子类AppDelegate具有了处理相应事件(events)的能力,UIApplicationDelegate协议中有各种事件的回调:
UIApplicationDelegate协议中的部分方法如下:
@protocol UIApplicationDelegate<NSObject> @optional - (void)applicationDidFinishLaunching:(UIApplication *)application; - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (void)applicationDidBecomeActive:(UIApplication *)application; - (void)applicationWillResignActive:(UIApplication *)application;
这些方法会在应用生命周期的不同阶段会被调用。
程序执行步骤:程序启动 -> 执行main.m中的main()函数 -> 初始化UIApplication对象 并设置代理AppDelegate为其代理 -> AppDelegate接收事件回调
-> 然后就可以实现你自己的业务逻辑了
实际上:main.m中初始化了一个 UIApplication
对象 ,把AppDelegate设置为其代理来接收各种事件以供其驱使。
相关文章推荐
- iOS开发 - App程序启动原理
- iOS开发 - App程序启动原理
- IOS开发入门----UIApplication和AppDelegate以及IOS程序启动的过程(2017/8/8)
- nokey属性(输出没有名称的数组)---精通android、IOS App应用服务程序开发
- iOS开发UI篇之16程序启动原理和UIApplication
- iOS开发-UIApplication和delegate & iOS程序的启动原理
- iOS开发—程序启动原理与UIApplication
- iOS开发UI篇—程序启动原理和UIApplication
- 输出Bag中的一条记录--精通android、IOS App应用服务程序开发
- 提高到精通移动(android、IOS)App应用服务程序开发
- iOS app 程序启动原理
- ios app开发学习流程(入门到精通)
- iOS开发UI篇—程序启动原理和UIApplication
- 输出Bag中的所有记录为一个只有值的json数组---精通android、IOS App应用服务程序开发
- ios开发-程序启动原理&项目中的常见文件(pch文件 & Info.plist)
- iOS开发UI篇—程序启动原理和UIApplication
- 2.iOS开发UI篇—程序启动原理和UIApplication
- iOS开发UI篇—程序启动原理和UIApplication
- iOS开发UI篇—程序启动原理和UIApplication
- 输出Bag中的所有记录为一个json数组---精通android、IOS App应用服务程序开发