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 ...
随机推荐
- OA系统权限管理设计(转载)
不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l 不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是 ...
- Middleware课程01-概述
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源.中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯.是连接两个独立应用程序或独立系统的软件.相 ...
- 一个简单的小例子让你明白c#中的委托-终于懂了!
模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事 ...
- ListView返回选中的多项目
ListView返回选中的多项目 procedure TForm1.Button3Click(Sender: TObject);var s: string; I: Integer;begi ...
- 日志管理 rsyslog服务浅析
http://www.xiaomastack.com/2014/11/13/rsyslog/
- truncate 与 delete 的区别
Delete删除的数据可以通过日志文件进行恢复 Truncate Table删除的数据不能进行恢复 Delete删除时,标识列取值保留原使用中最大值 Truncate Table删除时,标识列恢复到最 ...
- Build类
在开发中 我们有时候会需要获取当前手机的系统版本来进行判断,或者需要获取一些当前手机的硬件信息. android.os.Build类中.包括了这样的一些信息.我们可以直接调用 而不需要添加任何的权限和 ...
- Peter's Hobby
Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf humi ...
- android 读取串口数据的服务
2016-09-1813:10:03 继承Service,定义抽象方法onDataReceived,子类通过实现抽象方法获取接收到数据的回调. package com.zrsoft.liftad.se ...
- linux高可用集群(HA)原理详解(转载)
一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用 ...