`
prevention
  • 浏览: 74830 次
社区版块
存档分类
最新评论

iOS Dev (38) 你不一定看到懂了 main.m 文件

 
阅读更多

iOS Dev (38) 你不一定看到懂了 main.m 文件

先看看代码

#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

分享到:
评论

相关推荐

    iOS解压.tar, .tar.gz, .tgz or .gzip文件

    可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。 可以非常简便地解压.tar, .tar.gz, .tgz or .gzip文件,还可以自定义解压后的路径。

    yolov5-ios-tensorflow-lite-main.zip

    《YOLOv5在iOS平台上的TensorFlow Lite实践详解》 YOLO(You Only Look Once)是一种基于深度学习的目标检测框架,以其实时性、高效性和准确性受到广泛关注。YOLOv5是该系列的最新版本,它在前代的基础上进行了优化...

    iOS开发文件相关的操作.zip

    在iOS开发中,文件管理是应用的基本功能之一,它涉及到数据的存储、读取和更新。本资料包“iOS开发文件相关的操作.zip”提供了一个名为"IOSFileManager-master"的项目,旨在帮助开发者深入理解iOS中的文件操作。在这...

    iOS Soft Dev Pack

    在【压缩包子文件的文件名称列表】中,我们看到"iOS Soft Dev Pack.exe",这可能是一个Windows平台的可执行文件,用于在Windows操作系统上运行越狱过程。它可能包含以下组件: 1. **越狱执行程序**:负责执行越狱...

    Beginning.iOS.5.Development.Exploring.the.iOS.SDK.pdf.zip )

    您可以上传小于50MB的文件Beginning.iOS.5.Development.Exploring.the.iOS.SDK.pdf.zip ) 您可以上传小于50MB的文件Beginning.iOS.5.Development.Exploring.the.iOS.SDK.pdf.zip ) 您可以上传小于50MB的文件...

    已经编译好的protoc可执行命令文件,可将.proto转为.proto.h和.proto.m文件,在iOS和Mac开发中解析Google Protobuf数据

    Protobuf是Google公司内部的混合语言数据标准,全称是Google Protocol Buffer,Protobuf是一种更小...本文将介绍如何将Proto文件编译为Obj-C源码文件,方便在iOS和Mac平台上面,使用Xcode开发并存储解析Protobuf文件。

    iOS解析execl .xlsx文件内容

    在iOS开发中,处理Excel文件,特别是.xlsx格式的文件,是一项常见的需求。这些文件通常包含大量的结构化数据,如表格、图表和公式,用于数据存储和分析。在iOS应用中解析.xlsx文件,可以让用户直接在App内查看和操作...

    ios-dev-flow-master.

    在iOS开发过程中,"ios-dev-flow-master"可能是一个包含了整个iOS应用开发流程或者框架的项目。这个项目的名称暗示了它可能是一个关于iOS开发者工作流的示例或模板,旨在帮助开发者建立高效、标准化的开发流程。下面...

    编译iOS使用的.a库文件

    2. **添加源代码**:在新项目中,导入你要包含在库中的源代码文件(.m和.h),这些文件可以是Objective-C或C/C++代码。 3. **设置目标架构**:在Xcode的“Project Settings”中,确保为你的库选择了正确的架构。...

    IOS plist文件详解

    iOS中的.plist文件是一种用于存储数据的简单且灵活的格式,全称为Property List,即属性列表。它是Apple操作系统(包括iOS和macOS)中常见的数据存储方式,尤其适用于配置文件、偏好设置或者轻量级的数据持久化。这...

    ios openssl静态库 (libssl.a和libcrypto.a) 基于最新的1.0.2m

    本文将详细介绍如何在iOS项目中使用基于OpenSSL 1.0.2m版本的静态库——libssl.a和libcrypto.a,以及如何处理不同架构的兼容性问题。 首先,`libssl.a`和`libcrypto.a`是OpenSSL的静态链接库,分别包含了SSL和加密...

    iOS本地文件操作

    在iOS应用开发中,本地文件操作是至关重要的一个环节,涉及到数据持久化、资源管理等多个方面。本篇文章将深入探讨如何在iOS中进行文件的读写、删除以及搜索,特别是针对.plist文件的操作。 首先,我们需要了解iOS...

    《app-dev-curriculum-cn》 iOS playground文件 IOS 学习实战 swift

    通过《app-dev-curriculum-cn》的iOS playground文件,你将逐步掌握从基础语法到高级特性的全面Swift编程技能,并深入了解iOS应用开发的各个环节。实践中学习,不断探索,你将成为一名熟练的iOS开发者。

    ios libx264 静态库 .a文件

    本文将详细解析"ios libx264 静态库 .a文件"的相关知识点,包括libx264库的介绍、静态库的概念、支持的架构以及如何在iOS项目中集成和使用libx264。 首先,libx264是一个开源的、高效的H.264视频编码器,广泛应用于...

    iOS开发中文件的上传和下载功能的基本实现

    本文介绍如何不借助第三方框架实现iOS开发中得文件上传。  由于过程较为复杂,因此本文只贴出部分关键代码。 主控制器的关键代码: 代码如下: YYViewController.m #import “YYViewController.h” #define ...

    ios-文件管理.zip

    通过以上分析,我们可以看到,"ios-文件管理.zip"中的Demo涵盖了iOS文件操作的核心知识点,包括文件系统的使用、文件操作的API、UI组件的应用以及用户交互的实现。这样的示例对于开发者理解并实践iOS中的文件管理...

    uniapp +上传文件+安卓、ios文件选择

    本教程将详细讲解如何在uniapp中实现文件上传功能,特别是针对Android和iOS设备,以及如何处理不同类型的文件,如PDF、Word和TXT,并将它们转换为Base64编码。 首先,我们需要了解uniapp的基础。uniapp基于Vue.js,...

    iOS原生文件系统解析.zip

    iOS原生文件系统解析 iOS操作系统使用的是名为“HFS+”(Hierarchical File System Plus)的文件系统,这是苹果公司在其Mac OS X系统中引入的,并被移植到了iOS设备上。HFS+是一个日志式的文件系统,它提供了一种...

    iOS_SDK.zip_Alipay_AlixPayResult.m_alipaysdkdemo_iOS alipayrsali

    本篇文章将详细介绍如何在iOS项目中集成支付宝SDK,通过`AlipaySDKDemo`和`AlixPayResult.m`文件,实现iOS应用的支付宝支付功能。我们将探讨`alipayrsalib.a`库的使用以及iOS应用中的关键步骤。 首先,`iOS_SDK.zip...

Global site tag (gtag.js) - Google Analytics