Xcode 中iOS工程模版:

1.Application类型:

  • Master-detail Application. 可以构建树形结构导航模式应用,生成的代码中包含了导航控制器和表示图控制器。(表示图控制器指的是导航控制器里的界面);
  • Game. 构建基于iOS的游戏应用;
  • Page-Based Application. 平铺导航,类似于电子书效果;
  • Tabbed Applecation. 构建标签导航模式应用,生成的代码中包含了标签控制器和标签栏。
  • Single View Application. 构建简单的单个视图应用。

2.Framework & Library类型

  • Cocoa Touch Framework:自定义应用于UIKit框架;
  • Cocoa Touch Library:可创建基于Foundation框架的静态库;

3.Other类型

  • 可构建应用内购买内容包盒空工程——内置收费功能的应用。

新建工程中的主要组分:AppDelegate和ViewController

  • AppDelegate:继承UIResponder类,并实现UIApplicationDelegate委托协议;是应用程序的委托对象,在这个类中继承的一系列方法在应用生命周期的不同阶段会被回调。

应用周期:

a.程序的生命周期是指应用程序启动到应用程序结束整个阶段的全过程

b.每一个IOS应用程序都包含一个UIApplication对象,IOS系统通过该UIApplication对象监控应用程序生命周期全过程

c.每一个IOS应用程序都要为其UIApplication对象指定一个代理对象,并由该代理对象处理UIApplication对象监测到的应用程序生命周期事件。

  • ViewController:视图控制器类,在工程中就是根视图和用户事件控制类。

iOS应用的5种状态:

  • Not Running (非运行状态)。应用没有运行或被系统终止。
  • Inactive(前台非活动状态)。应用正在进入前台状态,但还不能接收事件处理。
  • Active(前台活动状态)。应用进入前台状态,能接收事件处理。
  • Background(后台状态)。应用进入后台状态,依然能够执行代码。如果有可执行的代码,则执行代码,若没有活着执行完毕,会进入挂起状态。
  • Suspended(挂起状态)。处于此状态,应用将不执行代码。若内存不足,应用会被终止。

iOS运行状态的模拟调用:

  1. 点击应用图标时,应用启动:Not Running-->Inactive-->Active
  • Not Running-->Inactive:  调用application:didFinishLaunchingWithOptions:方法 发出UIApplicationDidFinishLaunchingNotification通知。
  • Inactive-->Active: 调用applicationDidBecomeActive:方法 发出UIApplicationDidBecomeActiveNotification通知。

2. 应用处于运行状态,点击Home键或者其他的应用导致当前应用中断:(根据产品属性文件中的相关属性Application does not run in background 是与否 控制两种状态)

1>可以在后台运行或者挂起: Active-->Inactive-->Background-->Suspended

  • Active-->Inactive: 调用applicationWillResignActive: 方法,发出UIApplicationWillResignActiveNotification通知。
  • Inactive-->Background: 应用在非活动状态进入后台。
  • Background-->Suspended:调用applicationDidEnterBackground:方法 发出UIApplicationDidEnterBackgroundNotification通知。

2>不可以在后台运行或挂起:Active-->Inactive-->Background-->Suspended-->Not running

  • Active-->Inactive:见上
  • Inactive-->Background:应用在非活动状态进入后台。
  • Background-->Suspended:调用applicationDidEnterBackground:方法 发出UIApplicationDidEnterBackgroundNotification通知。
  • Suspended-->Not running:调用applicationWillTerminate:方法 发出UIApplicationWillTerminateNotification通知。

3.  内存清理--应用终止场景

  • 应用在后台处理完进入到挂起状态(一种休眠状态),如果这是发现内存不足,为了满足其他应用对内存的需要,该应用会被清除内存从而终止运行。
  • Background-->Suspended-->Not running

视图生命周期:

视图创建------>viewDidLoad:

------->viewWillAppear:

视图可见

------->viewDidAppear:

------->viewWillDisappear:

视图不可见

------->viewDidDisappear:

------->didReceiveMemoryWarning:

系统内存低

------->viewDidUnload:

OC第一天-Xcode、工程组成及运行状态的更多相关文章

  1. 多人开发Xcode工程冲突,打不开解决办法

    在公司多人协作开发,相信好多程序员都遇到非常忧伤的问题,就是工程打不开,这样就无从下手,好多程序怨只能再从代码服务器上下载一份新的代码,今天军哥教你几个小技巧,让你的bigger瞬间提升一个档次 在公 ...

  2. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  3. iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)

    1. 来自 http://blog.csdn.net/fanjunxi1990/article/details/9352917 XCode工程目录里面,有时你会发现2个不同颜色的文件夹,一种是蓝色的, ...

  4. XCode工程中 Project 和 Targets区别

    转自:http://blog.csdn.net/zhaozy55555/article/details/8557175 project就是一个项目,或者说工程,一个project可以对应多个targe ...

  5. [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]

    1.导出Xcode工程 File->Building and setting,导出IOS工程(有错误会失败) 2.运行Xcode工程,在Classes文件夹的UI文件夹里,早到UnityAppC ...

  6. SVN版本更新后,upData工程之后,Xcode 工程文件打不开解决办法

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened becausethe project file cannot be parsed. ...

  7. Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed ...

  8. Xcode工程使用CocoaPods管理第三方库新建工程时出现异常

    Xcode工程使用CocoaPods管理第三方库新建工程时出现异常 Xcode工程使用CocoaPods管理第三方库新建工程时出现错误工程使用CocoaPods管理第三方库,在新的目录update版本 ...

  9. Apple Watch 1.0 开发介绍 1.2 简介 配置Xcode工程

    WatchKit app需要一个现有的iOS app.在iOS app工程中,添加一个新的WatchKit app target,它包含了WatchKit app和WatchKit extension ...

随机推荐

  1. CentOS 6.3(x86_64)下安装Oracle 10g R2

    目 录 一.硬件要求二.软件三.系统安装注意四.安装Oracle前的系统准备工作五.安装Oracle,并进行相关设置六.升级Oracle到patchset 10.2.0.4七.使用rlwrap调用sq ...

  2. 浅谈TCP优化

    原文地址:http://kb.cnblogs.com/page/197406/ 很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigor ...

  3. fl,flash,mx包的区别

    在ActionScript项目中还真是不能使用mx包中的UI组件.           Adobe官方论坛上有一个帖子讲述了这个问题,大致意思是说:你要使用mx包中像Button这样的UI组件都是从U ...

  4. 一个公网地址部署LVS/DR模式

    http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式   网上看了很多关于LVS的文章,在选取2种模式LVS/D ...

  5. TRF7960天线参数试验

    CA1焊47pF就好了,不大用调,主要调CA2的值 图中CA2焊100pF时,读卡距离2cm左右 27pF                3.5cm左右 不焊 4cm左右 47pF 5cm左右 现在手 ...

  6. 最新cocoapods安装流程,安装过程中遇到的问题及解决方法

    最近重新安装了一次cocoapods,参考的安装流程:http://blog.csdn.net/showhilllee/article/details/38398119/ 但是现在的cocoapods ...

  7. Sql语句中的truncate,delete,drop的区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 不同点: 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop 语句 ...

  8. 使用JS制作一个鼠标可拖的DIV(四)——缩放

    原理与鼠标拖动 DIV 相同. 下面就先实现一个在DIV的右上角显示一个小正方形(类似). 当鼠标按下并拖动时,DIV会以要拖动的元素的左下角的坐标点定位,根据鼠标的拖动,按比例的扩大或缩小. 一.思 ...

  9. iOS 数据类型

    标签: 数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声 ...

  10. Java 8: Lambdas和新的集合Stream API

    Lambda是Java8的主要特色,Java 8: Lambdas & Java Collections | zeroturnaround.com一文介绍了使用Lambda集合处理大量数据的方 ...