iOS 爱你的第一天

话说,我们谈恋爱很长时间了,但最近你说:“你不是真的爱我,你根本就不理解我,我是谁,来自哪里,你知道么?”,面对你的质问,我竟然无言以对,或许我真的要重新认识你,而不仅仅是利用你,我错了,亲爱的,请给我一次机会,我想重新追求你,好么。

首先,你主要的工程结构包含有:

main.m 程序的入口

xxx-Prefix.pch 预编译头文件

xxx-Info.plist 程序配置文件

InfoPlist.string 国际化文件

xxx.app 最终程序

framework 各种框架

2 程序执行的顺序:

 main.m是程序的入口;UIApplicationMain()创建应用程序对象,并且为此对象指定委托,检测程序的执行,同时开启事件循环,处理程序接收到的事件;UIApplicationDelegate 方法的执行;加载window ;指定根视图控制器。

3 认识一下 UIApplication 

其就是应用程序本身,系统将其做成了实例来使用,每一个程序都是UIApplication或子类的实例,主要用于处理用户的事件,以及负责window 的显示,通常会给应用程序指定一个委托来检测程序的运行。

4 main函数

main函数因为在程序中被用到几乎没有,所以几乎把其忽略掉了,今天我们重新认识一下。我们都知道应用程序运行所需要的 大多数工作实际由其代理方法来执行,所以main函数会有一个标准的模板,

在main.m文件中代码如下:

#import#import "AppDelegate.h"

int main(int argc, char * argv[]) {

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

其主要作用,创建一个自动释池,调用UIApplicatinMain函数,以及使用自动释放池。

这里介绍一下UIApplicationMain函数的四个参数:前两个是需要传给main函数连个参数,具体干什么不太清楚,剩下的两个字符串参数,第三个是用于标识应用程序的首要类,即应用程序所属的类,如果第三个参数为nil,则UIKit就缺省使用UIApplicatin类。第四个参数是应用程序委托类,如果其为nil,则UIKit就会将应用程序的主nib文件中的摸个对象假定为应用程序的委托对象。如果第三个参数为非nil时,则启动程序时,UIApplicationMain函数会创建一个与传入值相应的类实例,所以一般情况下 第三个参数为 nil.

5 UIApplicationDelegate 

其主要监听应用程序的一系列的行为,比如程序启动 活跃/非活跃状态 前后台切换 推送通知 内存警告,以及CoreData的初始化配置。

6 UIWinow

其有一个重要的属性是 rootViewController,用于装载窗口里面的第一个视图

其有一个重要的方法:makeKeyAndVisible ,将当前的window设为主window ,并且将其内容显示出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472
  • 初识iOS APP开发#### 在iOS APP开发中, main函数仍是程序的入口和出口, 但main函数不需要...
    DeanYan阅读 6,335评论 0 3
  • 最近一朋友正准备跳槽,就从各处搜索整理一些基础,便于朋友复习,也便于自己复习查看. 1. 回答person的ret...
    smile丽语阅读 1,802评论 0 7
  • 程序入口点 当iOS app启动时,系统会根据app bundle中的 Info.plist 文件中的 Execu...
    木板钉钉阅读 3,475评论 2 9
  • 关键步骤 一个程序从main函数开始启动。代码如下: int main(int argc, char * argv...
    JzRo阅读 606评论 0 2