OC第一天-Xcode、工程组成及运行状态
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运行状态的模拟调用:
- 点击应用图标时,应用启动: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、工程组成及运行状态的更多相关文章
- 多人开发Xcode工程冲突,打不开解决办法
在公司多人协作开发,相信好多程序员都遇到非常忧伤的问题,就是工程打不开,这样就无从下手,好多程序怨只能再从代码服务器上下载一份新的代码,今天军哥教你几个小技巧,让你的bigger瞬间提升一个档次 在公 ...
- 细聊 Cocoapods 与 Xcode 工程配置
前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...
- iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
1. 来自 http://blog.csdn.net/fanjunxi1990/article/details/9352917 XCode工程目录里面,有时你会发现2个不同颜色的文件夹,一种是蓝色的, ...
- XCode工程中 Project 和 Targets区别
转自:http://blog.csdn.net/zhaozy55555/article/details/8557175 project就是一个项目,或者说工程,一个project可以对应多个targe ...
- [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]
1.导出Xcode工程 File->Building and setting,导出IOS工程(有错误会失败) 2.运行Xcode工程,在Classes文件夹的UI文件夹里,早到UnityAppC ...
- SVN版本更新后,upData工程之后,Xcode 工程文件打不开解决办法
svn更新代码后,打开xcode工程文件,会出现 xxx..xcodeproj cannot be opened becausethe project file cannot be parsed. ...
- 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 ...
- Xcode工程使用CocoaPods管理第三方库新建工程时出现异常
Xcode工程使用CocoaPods管理第三方库新建工程时出现异常 Xcode工程使用CocoaPods管理第三方库新建工程时出现错误工程使用CocoaPods管理第三方库,在新的目录update版本 ...
- Apple Watch 1.0 开发介绍 1.2 简介 配置Xcode工程
WatchKit app需要一个现有的iOS app.在iOS app工程中,添加一个新的WatchKit app target,它包含了WatchKit app和WatchKit extension ...
随机推荐
- 多线程访问winform控件出现异常的解决方法
一. 多线程访问winform控件出现异常的解决方法 1. 问题描述<1> 如果创建某控件的线程之外的其他线程试图调用该控件,则会引发一个 InvalidOperationExcept ...
- no datanode to stop
昨晚整了半天,遇上的问题是通过start-all.sh无法启动datanode,然后关闭时就会报no datanode to stop ,引起这个的原因是因为我多次格式化,导致namespaceID不 ...
- freeRadius 基础配置及测试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- DevExpress - cxGrid 使用方法
如何设置多选,并对多个选中行进行数据处理. 1.首先需要将需要获取的字段的列添加到 Grid 中,例如 grdDemoColumn1. 2.将 Grid 的 OptionsSelection 中的 C ...
- [AngularJS] Lazy loading Angular modules with ocLazyLoad
With the ocLazyLoad you can load AngularJS modules on demand. This is very handy for runtime loading ...
- 已知json类型根据类型封装集合
1编写帮助类根绝url得到json public static string Post(string url) { string strURL = url; //创建一个HTTP请求 HttpWebR ...
- C#动态加载程序集(转)
C#动态加载程序集 今天在看网络上的一篇关于‘.NET应用自动部署窗体技术’.NET的自动部署技术构造在.NET框架之中,它使得应用程序能够通过HTTP连接从远程服 务器按需下载程序集.有了这个功能, ...
- CSS 创建方式与优先级
最近想学习自动化测试--web元素的匹配查找,一直搞不懂CSS的相关标签与对元素的渲染方式. 本文转自W3School: http://www.w3school.com.cn/css/css_howt ...
- AVL树的插入操作(旋转)图解
=================================================================== AVL树的概念 在说AVL树的概念之前,我们需要清楚 ...
- [改善Java代码]避免带有变长参数的方法重载
建议4: 避免带有变长参数的方法重载 在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection ...