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 ...
随机推荐
- RealSense 3D实感体验:前景广阔目前应用少
腾讯数码讯(周硕)在去年的IDF大会上,英特尔着重展示了其全新的RealSense 3D实感技术,而厚度仅6mm堪称史上最薄平板的戴尔Venue 8 7000也成为首个搭载RealSense技术的产品 ...
- ADO.NET 快速入门(十二):从 SQL Server 生成 XML 数据
本文演示如何使用2种不同的方法从 SQL Server 生成 XML. 方法1:使用了 SqlCommand 的 ExecuteXmlReader 方法获取 XmlReader,然后使用 Data ...
- HTTP请求头详解【转】
http://blog.csdn.net/kfanning/article/details/6062118 HTTP由两部分组成:请求和响应.当你在Web浏览器中输入一个URL时,浏览器将根据你的要求 ...
- VB连接Mysql数据库
当然机器装有mysql数据库 然后下载安装Mysql,odbc驱动 须要加入ado'菜单"project"->"引用" 找 Microsoft Activ ...
- 图像切割之(五)活动轮廓模型之Snake模型简单介绍
图像切割之(五)活动轮廓模型之Snake模型简单介绍 zouxy09@qq.com http://blog.csdn.net/zouxy09 在"图像切割之(一)概述"中咱们简单了 ...
- mac下批量删除.svn文件
mac下.svn是隐藏文件,而且即使我们调成可见的,一个一个删也很麻烦.今天正好同事问起来这个命令,于是想可能有些人也需要,于是还是放到博客里吧 命令比较简单,其实就是一条linux命令,打开终端,首 ...
- Codeforces Round #326 (Div. 2) B. Duff in Love 分解质因数
B. Duff in Love Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/588/proble ...
- [置顶] VC++界面编程之--自定义CEdit(编辑框)皮肤
自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个. 要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事: 1. ...
- [PLL][PM]锁相环模拟相位解调
%锁相环测试 %模拟相位解调 clear close all clc fs=1000; %采样率 tend=100; t=0:1/fs:tend; t(end)=[]; fc=1; %载波频偏 fb= ...
- iOS开发技巧系列---详解KVC(我告诉你KVC的一切)
KVC(Key-value coding)键值编码,单看这个名字可能不太好理解.其实翻译一下就很简单了,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值.而不需 ...