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. twisted 安装时,安装顺序为 zope.interface ->twisted

    最近想学 twisted ,就去下载 twisted 的windows版本,并且 安装.运行 twisted 例子后,发现出现了问题: ImportError: Twisted requires zo ...

  2. V​M​W​a​r​e​里​安​装​6​4​位​L​i​n​u​x​ ​的​方​法

    1.CPU AMD系列的CPU略过 Intel系列的CPU芯片需要支持EM64T和VT技术才行,并且BIOS也要支持才可以. 为了确定你的Intel CPU是否支持VT,请查看: http://com ...

  3. IIS应用程序池性能分析

    #查看应用程序池和w3wp.exe进程的对应关系iisapp -a C:\windows\system32\inetsrv\appcmd.exe list wp 查看任务管理器: 在性能计数器中找到对 ...

  4. delphi 在 DragDrop 的时候,滚动 TreeView

    在 DragDrop 的时候,滚动 TreeView 当高度不够的时候   procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, ...

  5. 【Bootstrap3.0建站笔记三】AspNetPager分页,每一列都可排序

    1.AspNetPager分页,实现每一列都可排序:           (1).须要将默认排序字段放在HTML页面中.           (2).排序字段放置为td节点的属性. 如图: 实现的效果 ...

  6. android4.0蓝牙使能的详细解析

    本文详细分析了android4.0 中蓝牙使能的过程,相比较android2.3,4.0中的蓝牙最大的差别在于UI上on/off的伪开关.在android4.0中加入了 adapter的状态机.所谓的 ...

  7. SON-RPC for Java

    JSON-RPC for Java https://github.com/briandilley/jsonrpc4j#json-rpc-for-java This project aims to pr ...

  8. iOS开发——动画篇Swift篇&常用动画总结

    UIView动画: UIView动画时最基本的动画,是直接对我们界面上控件进行简单的动画效果实现,如果你只需要用到一些简单的效果,那么这个很适合你,关于UIView动画实现恨简单, UIKit直接将动 ...

  9. 迷途指针 new delete

    编程中有一种很难发现的错误是迷途指针.迷途指针也叫悬浮指针.失控指针,是党对一个指针进行delete操作后——这样会释放它所指向的内存——并没有把它设置为空时产生的.而后,如果你没有重新赋值就试图再次 ...

  10. QFtp类参考

    QFtp是一个用来实现FTP协议的类. 详情请见…… #include <qftp.h> 继承了QNetworkProtocol. 所有成员函数的列表. 公有成员 QFtp () virt ...