iOS从入门到精通---1.iOS开发App程序启动原理

前言:学习iOS开发是一件高大上的事情,但是再怎么高大上的事情,不付出努力,走马观花,始终都不会有什么收获,更不会有什么进步。要静下心来,慢慢学习,天天练习,把coding当做一件快乐有趣的事,而不是仅仅当做用来赚钱的工具,这样才能主动的去学习,才能有所收获,也有助于养成一个良好的心态!(写给大家,也写给自己)

----------------------------------------------------------------------

好的,废话少说,言归正传:

先看图,没图说个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设置为其代理来接收各种事件以供其驱使。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值