iOS Dev (38) 你不一定看到懂了 main.m 文件
- 作者:大锐哥
- 博客:http://blog.csdn.net/prevention
先看看代码
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
它都做了什么?
有两个重点,一个是自动释放池 autorelease pool。这个东东是 iOS5 引入 Auto Reference Counting 后加入的东东。要注意的是,这个货意味着对应一个线程(在这里,就是主线程)。而对于一个多线程的 Application,你应该再为其他线程准备 autorelease pool。
另一个重点,就是 UIApplicationMain。这东东最基本的功能,自然是创建一个 Application 对象。其次呢,它还会创建相应的委托对象(Delegate),Application 在应用出现相应状态变化时调用相应的协议方法。这货负责建立应用程序的事件循环(Event Loop),事件循环中可以不断接收交互操作,比如屏幕触摸手势、各类传感器(重力加速器、陀螺仪等)等。
为什么没看到 UIApplication 这货的实例?
我们知道,一个可以拿出来得瑟的应用,至少要有一个 UIApplication 作为主体,接收各类 events。而还要有一个 UIApplicationDelegate 来作为具体处理 events 的家伙。简单说,前者接收事件,后者处理事件。
接收事件这部分的代码,iOS 都帮你写好了,你只需要把如何处理事件的代码写出来就行了。UIApplicationMain 会自动创建 UIApplication,吼吼,这就是所谓“帮你写好了”。里面到底咋回事,你不用管。
你要做的,就是把 UIApplicationDelegate 搞定。工程创建好后,有一个 AppDelegate 这个货在那。这货的代码如下:
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
意思是不是很清楚啊。那么你看看 AppDelegate.m 文件,就知道这货都是如何处理事件的了(事实上,并没有啥代码,代码都被封装在了 UIApplicationDelegate 里)。
转载请注明来自大锐哥的博客:http://blog.csdn.net/prevention
相关推荐
可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。 可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。
您可以上传小于50MB的文件Beginning.iOS.5.Development.Exploring.the.iOS.SDK.pdf.zip ) 您可以上传小于50MB的文件Beginning.iOS.5.Development.Exploring.the.iOS.SDK.pdf.zip ) 您可以上传小于50MB的文件...
iOS Soft Dev Pack
ios-dev-flow-master.
iOS 13.3 的支持包文件..
iOS openssl 静态库 .a文件 支持 armv7 armv7s 模拟器
ios静态库(.a文件)
Protobuf是Google公司内部的混合语言数据标准,全称是Google Protocol Buffer,Protobuf是一种更小...本文将介绍如何将Proto文件编译为Obj-C源码文件,方便在iOS和Mac平台上面,使用Xcode开发并存储解析Protobuf文件。
H5使用的iosselect.css和iosselect.js文件
yolov5移植到ios运行测试例子, 亲测有效。
本文介绍如何不借助第三方框架实现iOS开发中得文件上传。 由于过程较为复杂,因此本文只贴出部分关键代码。 主控制器的关键代码: 代码如下: YYViewController.m #import “YYViewController.h” #define ...
iOS 13.4 的支持包文件..
ios多文件编程用法: 作用:保存应用的信息,软件名称、版本号等等,相当于身份证 Bundle name:程序名称,不能超过12个字节 Bundle versions string, short:APP版本号 Bundle identifier:APP项目唯一标识 Bundle ...
《app-dev-curriculum-cn》 iOS playground文件 IOS 学习实战 swift
ios libx264 静态库 .a文件 支持armv7 7s 模拟器
iOS 解析(execl).xlsx 文件的内容的解析库(framework),使用时需要在项目的target -> Embedded Binaries 中导入该库
利用局域网,传输文件 利用 node.js 搭建的服务器,对局域网中的文件进行共享的一款适用于mac的项目。方便在工作中文件的传输。(此软件适用于ios开发者) 配置node环境 * 先下载node [下载node官网]...
iOS系统Crash文件分析方法参考.pdf
5. 重命名原生项目内的main.m文件后缀为main.mm. 切记 6. 在原生应用的AppDelegate中封装UnityAppController 7.