教程:基础

main 中的 main.m 函数会调用自动释放池 (autorelease pool) 中的 UIApplicationMain 函数。

@autoreleasepool {
return UIApplicationMain(argc, argv, nil,NSStringFromClass([XYZAppDelegate class]));
}

@autoreleasepool 语句支持应用程序的内存管理。自动引用计数 (Automatic Reference Counting, ARC) 利用编译器追踪对象的所有者,使内存管理变得简单;@autoreleasepool 是内存管理基础结构的一部分。

调用 UIApplicationMain 函数 会创建应用程序的两个重要初始组件:

  1. UIApplication 类的实例,称为应用程序对象。

  应用程序对象可管理应用程序事件循环,并协调其他高级的应用程序行为。定义在 UIKit 框架  中的这个类,不要求您编写任何额外的代码,就可以达成其任务。

  2.XYZAppDelegate 类的实例,称为应用程序委托。

  Xcode 创建此类,作为设置 Empty Application 模板的一部分。应用程序委托会创建一个呈  现应用程序内容的窗口,并为响应应用程序内的状态转换提供位置。这个窗口是您编写自定应  用程序级代码的地方。与所有的类一样,XYZAppDelegate 类在应用程序的两个源代码文件  中被定义:接口文件 XYZAppDelegate.h;实现文件 XYZAppDelegate.m。

应用程序对象和应用程序委托互动的方式:

  应用程序启动时,应用程序对象会调用应用程序委托上已定义的方法,使自定代码有机会执行  其操作,这正是运行应用程序的有趣之处。为了深入理解应用程序委托的角色,请从接口文件  开始查看其源代码。

  如果要查看应用程序委托的接口文件,请在项目导航器中选择                XYZAppDelegate.h。应用程序委托的界面包含了单一属性:window。有了这个属性,应用  程序委托才会跟踪能呈现所有应用程序内容的窗口。

  

  XYZAppDelegate.m。应用程序委托的实现包含了一些重要方法的“骨架”。这些预定义的方法可让应用程序对象与应用程序委托进行沟通。在一个重要的运行时事件(例如,应用程序启动、低内存警告和应用程序终止)中,应用程序对象会调用应用程序委托中相应的方法,使其有机会进行适当的响应。您无需执行任何特殊的操作,来确定这些方法是否会在正确的时间被调用,因为应用程序对象会帮您处理这部分的工作。

 这些自动实现的方法都具有一个默认的行为。就算将骨架实现留空,或将它从 XYZAppDelegate.m 文件中删除,这些行为在方法被调用时,都会默认执行。您可以使用这些骨架来放置附加的自定代码,以在方法被调用时执行。例如,XYZAppDelegate.m 文件中的第一个方法包含了几行代码,用于设置应用程序的窗口,并让应用程序首次运行时显示白色的背景颜色。在本教程中,您不会使用到任何自定应用程序委托代码,因此可以移除这段代码。

iOS-马上着手开发iOS应用应用程序-第一部分介绍的更多相关文章

  1. 马上着手开发ios应用程序

    https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOSCh/chapters/Introd ...

  2. 马上着手开发 iOS 应用程序

    https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOSCh/chapters/Introd ...

  3. 马上着手开发Mac应用程序

    你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...

  4. iOS-马上着手开发iOS应用应用程序-第二部分构建应用程序

    第二部分构建应用程序 1,应用程序开发过程 2,设计用户界面 3,定义交互 4,教程:串联图 1,应用程序开发过程 定义概念 设计用户界面 定义交互 实现行为整合数据 对象是应用程序的基石 类是对象的 ...

  5. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

  6. 开发iOS应用程序需要的工具和编程技术

    似乎每个iOS应用开发学习者都是从这篇文章开始写博客的,我也不例外,也从这里写吧,内容雷同,但绝对是原创.因为一直相信,通过自己的理解写出来,是掌握技术一个很好的途径. Xcode苹果最为优秀的集成开 ...

  7. 在Visual Studio中使用MonoTouch开发iOS应用程序

    前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序.虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用M ...

  8. IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)

    IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...

  9. iOS 9应用开发教程之定制应用程序图标以及真机测试

    iOS 9应用开发教程之定制应用程序图标以及真机测试 定制ios9应用程序图标 在图1.12中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标.这个图标是可以进行改变的.以 ...

随机推荐

  1. SQL server 那些数据类型不能作为索引

    下数据类型不能包括在列存储索引中: ·binary和varbinary ·ntext.text和 image ·varchar(max)和nvarchar(max) ·uniqueidentifier ...

  2. Sublime Text 3配置C++编译运行

    2016.9.8更新: linux(Ubuntu16.04)下的配置,编译后用终端运行,解决了不能输入的问题 { "encoding": "utf-8", &q ...

  3. [cf621E]Wet Shark and Blocks

    Description 给定$n$个数和$b$个盒子,放一些数到盒子中,使得盒子不为空.每个盒子中的数是一样的,一个数可以被放到多个盒子中. 从每个盒子中取一个数,组成一个$b$位数,如果这个数$mo ...

  4. 【BZOJ-2521】最小生成树 最小割

    2521: [Shoi2010]最小生成树 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 415  Solved: 242[Submit][Statu ...

  5. choorme 升级到最新版 adobe flash提示过期解决方案

    进入adobe flash 官网,下载最新版的adobe flash http://labs.adobe.com/downloads/flashplayer.html

  6. Linux内核邮件列表发送和回复格式研究

    1.使用的内容格式为[纯文本],这个在国内的客户端已经没有了,大公司只有微软的outlook. 2.回复引用时,使用符号[>]作为标记,且回复的内容不能在最顶部,应该在最下面.参考:http:/ ...

  7. linux内核增加系统调用--Beginner‘s guide

    Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. ...

  8. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: POC http://localhost/p ...

  9. Discuz X1.5 X2.5 X3 UC_KEY Getshell Write PHPCODE into config/config_ucenter.php Via /api/uc.php Vul

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 在Discuz中,uc_key是UC客户端与服务端通信的通信密钥.因此使用uc_k ...

  10. select 1 from dual 中的1表示的含义

    select 1 from dual   在这条sql语句中的1代表什么意思?查出来是个什么结果?   其实: select 1 from table; select anycol(目的表集合中的任意 ...