ios9.1打开游戏文件夹怎么打开/applications

第一部分 基础篇
  第1章 开篇综述 2
  1.1  iOS概述 2
  1.1.1  iOS介绍 2
  1.1.2  iOS 6新特性 2
  1.2  开发环境及开发工具 3
  1.3  本书中的约定 4
  1.3.1  案例代码约定 4
  1.3.2  图示的约定 5
  第2章 第一个iOS应用程序 7
  2.1  创建基于nib的HelloWorld工程 7
  2.1.1  创建工程 7
  2.1.2  中的iOS工程模板 10
  2.1.3  应用剖析 11
  2.2  基于的HelloWorld工程 13
  2.2.1  使用故事板重构HelloWorld 14
  2.2.2  nib、xib与故事板 15
  2.2.3  故事板中的Scene和Segue 16
和(参见图)是故事板中非常重要的两个概念。每个视图控制器都会对应一个,翻译为“场景”,可以理解为应用的一个界面或屏幕,在这个屏幕中有很多视图或控件,相当于一个。这些之间通过连接,不但定义了之间的跳转(或导航)方式,还体现了之间的关系。跳转的类
型分为:、、和自定义方式。跳转类型还要跟具体的控制器结合使用。是树形导航模
 应用生命周期 17
作为应用程序的委托对象,
AppDelegate类在应用生命周期的不同阶段会回调不同的方法。
下面简要介绍一下应用的种状态。
Not Running(非运行状态)。应用没有运行或被系统终止。
Inactive(前台非活动状态)。应用正在进入前台状态,但是还不能接受事件处理。
Active(前台活动状态)。应用进入前台状态,能接受事件处理。
Background(后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码,就会执行代码,
如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。
Suspended(挂起状态)。处于挂起的应用进入一种“冷冻”状态,不能执行代码。如果系统内存不够,
应用会被终止。
application:didFinishLaunchingWithOptions:UIApplicationDidFinishLaunchingNotification
应用启动并进行初始化时会调用该方法并发出通知。这个阶段会实例化根视图控制器
applicationDidBecomeActive: UIApplicationDidBecomeActiveNotification
应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复
 非运行状态——应用启动场景 18
在Not running→Inactive阶段。调用application:didFinishLaunchingWithOptions:方法,发出UIApplicationDidFinishLaunchingNotification通知。
在Inactive→Active阶段。调用applicationDidBecomeActive:方法,发出UIApplicationDidBecomeActiveNotification通知。
  2.3.2  点击Home键——应用退出场景 19
2. 应用不可以在后台运行
 挂起重新运行场景 20
  2.3.4  内存清除——应用终止场景 21
  2.4  视图生命周期 21
  2.4.1  视图生命周期与视图控制器关系 22
在视图不同的生命周期中,视图控制器会回调不同的方法
didReceiveMemoryWarning:方法的主要职能是释放内存,包括视图控制器中的一些成员变量和视图的释放。现举例如下:
  2.4.2  iOS 6 UI状态保持和恢复 23
恢复标识是
-(BOOL) application:(UIApplication *)application shouldRestoreApplicationState:
(NSCoder *)coder
return YES;
- (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:
(NSCoder *)coder
[coder encodeFloat:2.0 forKey:@&Version&];
- (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:
(NSCoder *)coder
float lastVer = [coder decodeFloatForKey:@&Version&];
application:shouldRestoreApplicationState:方法在应用启动时调用,负责控制是否恢复上次退出
时的状态,返回YES表示可以恢复,返回NO表示不可以恢复。
application:willEncodeRestorableStateWithCoder:方法在保存时调用,在这个方法中实现
  2.5  设置产品属性 25
为了禁止应用在后台运行,我们将
  2.5.1  中的Project和Target 25
一个工程只有一个
首先,依次选择
  2.5.2  设置常用的产品属性 27
设定屏幕方向
设置设备支持情况
  2.6  iOS API简介 29
1. Cocoa Touch层
该层提供了构建
3. Core Services层
该层提供了
4. Core OS层
该层提供了一些低级功能,开发中一般不直接使用它。该层包括的主要框架如表
.6.1  API概述 29
  2.6.2  如何使用API帮助 31
如果想查询比较完整的、全面的帮助文档,可以按住
  2.7  小结 33
IOS-Foundation框架结构,iosfoundation框架
这些东西,等用的时候查资料就行,用的多了,自然就记住了,大概过一下
发现一个不错的 ios 学习博客:/kenshincui,非常好,推荐看看。FOundation系列笔记,是作为个人复习用,内容除了书本,个人经验还有一些是借鉴的它的博文。
Foundation 框架
它是IOS应用程序开发的基础,常用的框架有80多个,而 foundation 是他们所有的基础,提供了许多基本的对象类和数据类型,比如数字,字符串,数组,集合,字典,处理日期时间,自动化内存管理,文件,归档,处理几何数据结构等。它为所有应用程序提供基本的数据服务,
Foundation和界面无关,其前缀为NS 。
在Foundation中有些类仅被MAC OS支持而不被IOS支持。&
IOS 或者 MAC OS 里面的Cocoa是什么呢?
Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境。我们通常称为“Cocoa框架”。
Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的“Foundation”和“UIKit”。
前者是框架的基础,和界面无关,其中包含了大量常用的API;后者是基础的UI类库,以后我们在IOS开发中会经常用到。这两个框架在系统中的位置如下图:
所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象都是NSObject,NSObject就处在Foundation框架之中,具体的类结构如下:
通常分为:
UIKit主要用于界面构架,这里我们不妨也看一下它的类结构:
第3章 UIView与控件  
3.1  视图“始祖”--UIView  
3.1.1  UIView“家族” 
UIView“家族”大体分为“控件”和“视图”两类,二者均继承于UIView。
UIControl类是控件类,其子类有UIButton、UITextField和UISilder等。之所以称它们为“控件类”,是因为它们都有能力响应一些高级事件。
其中栏中的内容就是UIButton相对应的高级事件。UIControl类以外的视图没有这些高级事件,
这可以借助
事实上,视图也可以响应事件,但这些事件比较低级,需要开发人员自己进行处理。很多手势的开发都以这
些低级事件为基础的。 
3.1.2  应用界面的构建层次  
如图所示是一个应用界面的构建
层次图,该应用有一个UIWindow,其中包含一个UIView根视图。根视图下又有个子视图——、
应用界面的构建层次是一种树形结构,UIWindow是“树根”,根视图是“树干”,其他对象为树冠。在层次
结构中,上下两个视图是“父子关系”。除了UIWindow,每个视图的父视图有且只有一个,子视图可以有多个。
superview。获得父视图对象。
subviews。获得子视图对象集合。
window。获得视图所在的UIWindow对象。
3.1.3  视图分类  
为了便于开发,苹果将一个应用只有一个UIWindow对象,它是所有子视图的“根”容器。&
(ios应用一个应用只启动一个UIWindow ,而android 每一个activity对应一个UIWindow)
容器视图。它包括了UIScrollView、UIToolbar以及它们的子类。UIScrollView的子类有UITextView、UITableView和UICollectionView,在内容超出屏
& & &幕时,它们可以提供水平或垂直滚动条。UIToolbar是非常特殊的容器,它能够包含其他控件,一般置于屏幕底部,特殊情况下也可以置于屏幕顶部。
显示视图。用于显示信息,包括UIImageView、UILabel、UIProgressView和UIActivityIndicatorView等。
文本和Web视图。提供了能够显示多行文本的视图,包括UITextView和UIWebView,其中UITextView也属于容器视图,UIWebView是能够加载和显示
在后面章节中,很多视图(如UILabel、文本视图和进度条等)并未继承UIControl类,但我们也习惯
称之为“控件”,这是开发中约定俗成的一种常用归类方式,与严格意义上的概念性分类有差别。
3.2  标签控件和按钮控件 
3.2.1  标签控件 
3.2.2  按钮控件  
3.2.3  动作和输出口  
3.3  TextField控件和TextView控件  
3.3.1  TextField控件  
3.3.2  TextView控件  
3.3.3  键盘的打开和关闭  
3.3.4  关闭和打开键盘的通知  
3.3.5  键盘的种类  
3.4  开关控件、滑块控件和分段控件  
3.4.1  开关控件  
3.4.2  滑块控件  
3.4.3  分段控件
分段控件也是一种选择控件,其功能类似于
3.5  网页控件WebView  
混合产物,而控件是应用的关键技术,它不仅是负责解析的控件,更是本地和进行沟通
3.5.1  WebView介绍  
3.5.2  使用WebView构建Hybrid应用 
这里我们简要介绍一下
3.6  屏幕滚动控件ScrollView  
3.6.1  ScrollView属性的设置
它有两个子类——UITextView和UITableView,它们在内容超出屏幕时提供水平或垂直滚动条。还有UICollectionView
3.6.2  键盘与其他控件的协同  
3.7  等待相关的控件与进度条  
3.7.1  活动指示器ActivityIndicatorView  
3.7.2  进度条ProgressView  
3.8  警告框和操作表  
3.8.1  警告框AlertView  
3.8.2  操作表ActionSheet  
3.9  工具栏和导航栏  
3.9.1  工具栏  
3.9.2  导航栏  
3.10  屏幕布局  
3.10.1  iPad、iPhone和iPhone 5屏幕布局  
3.10.2  绝对布局和相对布局  
3.10.3  使用AutoLayout布局
3.10.4  旋转你的屏幕  
3.11  选择器  
3.11.1  日期选择器  
日期选择器有
3.11.2  普通选择器  
3.11.3  数据源协议与委托协议  
3.12  集合视图  
3.12.1  集合视图介绍  
为了增强网格视图开发,
3.12.2  集合视图单元格  
3.12.3  数据源协议与委托协议  
3.13  小结  
第4章 表视图  
4.1  概述  
本节中,我们将了解表视图中的一些概念、相关类、表视图的分类、单元格的组成和样式以及表视图的两
个协议——UITableViewDelegate委托和UITableViewDataSource数据源。
4.1.1  表视图的组成  
表头视图(table
header view)。表视图最上边的视图,用于展示表视图的信息,例如表视图刷新信息,
4.1.2  表视图的相关类  
表 视 图 (UITableView)继
承 自UIScrollView, 它 有 两 个 协 议 :UITableViewDelegate委
托 协 议 和
UITableViewDataSource数据源协议。
4.1.3  表视图分类  
普通表视图。主要用于动态表,而动态表一般在单元格数目未知的情况下使用。
分组表视图。一般用于静态表,用来进行界面布局,它会将表分成很多“孤岛”,这个“孤岛”由一些类
似的单元格组成,从图
4.1.4  单元格的组成和样式  
4.1.5  数据源协议与委托协议  
4.2  简单表视图  
4.2.1  创建简单表视图  
4.2.2  自定义单元格  
4.2.3  添加搜索栏  
4.3  分节表视图  
4.3.1  添加索引  
4.3.2  分组与静态表  
4.4  修改单元格  
4.4.1  删除和插入单元格  
表视图一旦进入删除和插入状态,单元格的左边就会出现一个“编辑控件”,如图
4.4.2  移动单元格  
4.5  表视图UI设计模式  
4.5.1  分页模式  
根据触发方式的不同,请求分为主动请求和被动请求。(主动请求就是在滑动到底部的时候另外再加载50条,被动请求则在底部放一个button点击之后重新加载)
4.5.2  下拉刷新模式  
下拉刷新是重新刷新表视图或列表,以便重新加载数据,这种模式广泛用于移动平台。
下拉刷新与分页相反,
当翻动屏幕到顶部时,再往下拉屏幕,程序就开始重新请求数据,此时表视图的表头部分会出现活动指示器,请求结束后表视图表头消失。
在很多开源社区中,都有下拉刷新的实现代码供大家参考,比如
4.5.3  iOS 7下拉刷新控件  
4.6  小结  
第5章 视图控制器与导航模式  
5.1  概述  
5.1.1  视图控制器的种类  
UIViewController。用于自定义视图控制器的导航。例如,对于两个界面的跳转,我们可以用一个
UIViewController来控制另外两个UIViewController。
UINavigationController。导航控制器,它与UITableViewController结合使用,能够构建树形结
构导航模式。
UITabBarController。标签栏控制器,用于构建树标签导航模式。
UIPageViewController。呈现电子书导航风格的控制器。
UISplitViewController。可以把屏幕分割成几块的视图控制器,主要为
5.1.2  导航模式
5.1.3  模态视图  
在导航过程中,有时候需要放弃主要任务转而做其他次要任务,然后再返回到主要任务,这个“次要任务”
就是在“模态视图”中完成的。图
5.2  平铺导航  
5.2.1  应用场景  
5.2.2  基于分屏导航的实现  
5.2.3  基于分页导航的实现  
5.3  标签导航  
标签导航模式是非常重要的导航模式。使用标签栏时,有一定的指导原则:标签栏位于屏幕下方,占有
5.3.1  应用场景  
5.3.2  实现  
5.4  树形结构导航  
对于每一个城市,如果还想看到更加详细的信息,比如想知道长春市在百度百科上的信息网址
5.4.1  应用场景  
5.4.2  实现  
5.5  组合使用导航模式  
有些情况下,我们会将
5.5.1  应用场景  
5.5.2  实现  
5.6  小结  
第6章 iOS常用设计模式  
设计模式是个很庞杂的知识体系,即便是同一设计模式在不同开发语言环境下也存
在很大的差异,而真正能驾驭设计模式的开发者的确不多。
软件设计模式大都来源于
6.1  单例模式
单例模式的作用是解决“应用中只有一个实例”的一类问题。
6.1.1  问题提出
在一个只需要一个实例就够了,如果有多个实例,就会占用过多的内存。
再有,当应用程序启动时,应用的状态由UIApplication类的一个实例维护,这个实例代表了整个“应用程
序对象”,它只能是一个实例,其作用是实现应用程序中一些共享资源的访问和状态的保持等。
6.1.2  实现原理 
 单例模式一般会封装一个静态属性,并提供静态实例的创建方法,
实现的参考代码如下:
// static Singleton *sharedManager为
静 态 变 量 , 类 方 法 为+ (Singleton*)sharedManager。
sharedManager方法采用了
6.1.3  应用案例  
1.UIApplication
UIAccelerometer
NSUserDefaults
NSNotificationCenter
5.NSFileManager
6.NSBundle
6.2  委托模式 
 委托模式从
6.2.1  问题提出 
& & 假设这一系列的处理都是在上帝类UIApplication中完成的。之所以叫“上帝类”(一个扮演框架类角色,框架类具有通用、可重复使用、与具体应用无关等特点;另一个扮演应用相关类的角色,应用相关类与具体应用有关。
中称为“接口”。
开发人员需要在具体的应用中实现这个“协议”。
UIApplication不直接依赖于AppDelegate类,而是依赖于UIApplicationDelegate协议,这在面向对象软件
设计原则中叫做“面向接口的编程”。
AppDelegate类实现协议UIApplicationDelegate,它是委托类。
委托是为了降低一个对象的复杂度和耦合度,使其能够更具通用性而将其中一些处理置于委托对象中的编码
方式。通用类因为通用性(与具体应用的无关性)而变为框架类,框架类保持委托对象的指针,并在特定时刻向
委托对象发送消息。消息可能只是通知委托对象做一些事情,也可能是对委托对象进行控制。
6.2.2  实现原理
6.2.3  应用案例  
6.3  观察者模式 
6.3.1  问题提出  
6.3.2  实现原理 
抽象观察者( Observer)。在
6.3.3  通知机制和KVO机制  
通知机制与委托机制不同的是,前者是“一对多”的对象之间的通信,后者是“一对一”的对象之间的通信。
2. KVO机制
不像通知机制那样通过一个通知中心通知所有观察者对象,而是在对象属性变化时通知会被直接发送给
观察者对象。图
6.4  MVC模式  
6.4.1  MVC模式概述
模式是一种复合设计模式,由“观察者”()模式、“策略”()模式和“合成”()
模式等组成。
模型。保存应用数据的状态,回应视图对状态的查询,处理应用业务逻辑,完成应用的功能,将状态的变
化通知视图。
视图。为用户展示信息并提供接口。用户通过视图向控制器发出动作请求,然后再向模型发出查询状态的
申请,而模型状态的变化会通知给视图。
控制器。接收用户请求,根据请求更新模型。另外,控制器还会更新所选择的视图作为对用户请求的回应。
控制器是视图和模型的媒介,可以降低视图与模型的耦合度,使视图和模型的权责更加清晰,从而提高开
6.4.2  Cocoa Touch中的MVC模式  
而和的模型与视图不能进行任何通信,所有的通信都是通 & &过控制器完成的.
6.5  小结  
第7章 iPhone与iPad应用开发的差异  
7.1  概述
& &首先,我们回顾一下 
7.1.1  应用场景差异  
7.1.2  设计和开发需注意的问题 
7.1.3  构建自适应的iPhone和iPad工程  
7.2  iPad专用API 
7.2.1  UIPopoverController控制器  
7.2.2  UISplitViewController控制器  
7.2.3  模态视图专用属性  
7.3  小结  
第8章 iOS分层架构设计  
& &设计模式只是解决某一特定问题的策略,是面向局部的;而架构设计则是一个将设计模式宏观、全面、有机地组织起来解决整个应用系统的方案。
& &衡量一个软件架构设计好坏的标准是可复用性和可扩展性。可复用性和可扩展性强的软件系统能够满足用户不断变化的需求。为了使我们的软件系统具有可复用性和可扩展性,我主张采用分层架构设计。
8.1  低耦合企业级系统架构设计 
  & & & &
表示层。用户与系统交互的组件集合。用户通过这一层向系统提交请求或发出指令,系统通过这一层接收
用户请求或指令,待指令消化吸收后再调用下一层,接着将调用结果展现到这一层。表示层应该是轻薄的,
不应该具有业务逻辑。
业务逻辑层。系统的核心业务处理层。负责接收表示层的指令和数据,待指令和数据消化吸收后,再进行
组织业务逻辑的处理,并将结果返回给表示层。
数据持久层。数据持久层用于访问信息系统层,即访问数据库或文件操作的代码只能放到数据持久层中,
而不能出现在其他层中。
信息系统层。系统的数据来源,可以是数据库、文件、遗留系统或者网络数据。
8.2   iOS分层架构设计  
& & & & &&有关信息处理的应用一般会采用分层架构设计,而游戏等应用一般不会这种采用分层架构设计。
& &提示游戏开发一般都会采用引擎。事实上,游戏引擎包含了架构设计解决方案,但其架构一般不是分层的,而
是树形结构的。
8.2.1  基于同一工程的分层  
如果我们要编写一个基于版和
8.2.2  基于一个工作空间不同工程的分层  
有时候,我们需要将某一层复用给其他的团队、公司或者个人,但由于某些原因,我们不能提供源代码,此
时就可以将业务逻辑层和数据持久层编写成静态链接库(
床架过程File--》new--》Project...在打开的对话框中选择FrameWork&Library--&Cocoa Touch Static Library工程模板。同时添加工程到我的工作空间
2. 业务逻辑层BusinessLayer工程
8.3  小结  
第9章 iOS 7中文字排版和渲染引擎--Text Kit  
9.1  Text Kit基础
9.1.1  文字的排版和渲染  
在是面向底层的文字排版和渲染技术,如果我们需要将文本内容直接渲染到图形上下文时,从性能角度考
虑,最佳方案就是使用。但是从易用性角度考虑,使用是最好的选择,因为它能够直接使用提供的一些文本控件,例如:、和,对文字进行排版。
9.1.2  Text Kit架构  
9.1.3  Text Kit中的核心类  
NSTextContainer。定义了文本可以排版的区域。默认情况下是矩形区域,如果是其他形状的区域,需
要通过子类化NSTextContainer来创建。
NSLayoutManager。该类负责对文字进行编辑排版处理,将存储在NSTextStorage中的数据转换为可以
在视图控件中显示的文本内容,并把字符编码映射到对应的字形上,然后将字形排版到NSTextContainer
定义的区域中。
NSTextStorage。主要用来存储文本的字符和相关属性,是NSMutableAttributedString的子类(见
9.1.3  实例:凸版印刷效果  
9.2  文字图片混合排版  
9.3  动态字体  
9.4  小结  
第10章 应用程序设置  
曾经见过我的同事将服务器的
10.1  概述  
10.1.1  设置  
10.1.2  配置  
10.2  应用程序设置包  
10.3  设置项目种类  
10.3.1  文本字段  
10.3.2  开关  
10.3.3  滑块  
10.3.4  值列表  
10.3.5  子界面  
10.4  读取设置  
10.5  小结  
第11章 国际化  
11.1  概述  
& &国际化(,简写为
11.1.1  需要国际化的内容
文本信息国际化。它是首先被考虑的,包括应用的名称、按钮、警告提示信息以及界面中显示的静态文
xib和故事板文件国际化。同一个界面和场景可以提供多个本地化版本的
11.1.2  国际化目录结构  
11.2  文本信息国际化  
11.2.1  系统按钮和信息国际化  
11.2.2  应用名称国际化  
11.2.3  程序代码输出的静态文本国际化  
11.2.4  使用genstring工具  
11.3  xib和故事板文件国际化  
11.3.1  使用Base国际化技术  
11.3.2  AutoLayout与国际化  
11.4  资源文件国际化  
11.4.1  图片资源文件国际化  
11.4.2  声音资源文件国际化  
11.5  小结  
第12章 数据持久化  
12.1  概述 
 有一套完整的数据安全体系,应用程序只能访问自己的目录,这个目录称为沙箱目录,而应用程序间
禁止数据的共享和访问。访问一些特殊的应用,如:联系人应用,必须通过特定访问。
12.1.1  沙箱目录 
&沙箱目录是一种数据安全策略,很多系统都采用沙箱设计,实现规范的一些浏览器也采用沙箱设计。
沙箱目录设计的原理就是只能允许自己的应用访问目录,而不允许其他的应用访问。在平台中,我们通过
技术将数据共享给其他应用。而在系统中,特有的应用(联系人等)需要特定的
下面的目录是
12.1.2  持久化方式  
持久化方式就是数据存取方式。
属性列表文件和对象归档一般用于存储少量数据。属性列表文件的
访问要比对象归档的访问简单, 数据库和一般用于有几个简单表关系的大量数据的情况。如
果是复杂表关系而且数据量很大,应该考虑把数据放在远程云服务器中。
12.2  属性列表  
12.3  对象归档  
12.4  使用SQLite数据库  
12.4.1  SQLite数据类型  
12.4.2  创建数据库  
12.4.3  查询数据  
12.4.4  修改数据  
12.5  Core Data  
12.5.1  ORM  
12.5.2  Core Data堆栈  
12.5.3  建模和生成实体  
12.5.4  采用Core Data分层架构设计  
12.5.5  查询数据  
12.5.6  修改数据  
12.6  小结  
第13章 访问通讯录  
&移动设备上都有一个很重要的内置数据库
与其他应用(如定位服务授权)不同的是,通讯录对一个应用只授权一次,即便是这个应用删除后重新安装,也不必再次授权。
13.1  概述 
&&在开发访问通讯录的应用中,我们使用了两个框架:
13.2  读取联系人信息  
13.2.1  查询联系人记录  
13.2.2  读取单值属性  
13.2.3  读取多值属性  
13.2.4  读取图片属性  
13.3  写入联系人信息  
13.3.1  创建联系人  
13.3.2  修改联系人  
13.3.3  删除联系人  
13.4  高级API  
13.4.1  选择联系人  
13.4.2  显示和修改联系人  
13.4.3  创建联系人  
13.5  小结  
第二部分  网  络  篇
第14章 访问Web Service  
14.1  概述  
14.2  数据交换格式  
14.2.1  XML文档结构  
14.2.2  解析XML文档  
ios SDK提供了两个XML框架,
NSXML。它是基于Objective-C语言的SAX解析框架,是iOS SDK默认的XML解析框架,不支持DOM模式。
libxml2.它是基于c语言的CML解析器,被苹果整合在iOS SDK中支持SAX和DOM模式
此外在iOS中解析XML时,还有很多第三方框架可以采用。
TBXML。它是基于DOM模式的解析库。与TBXML类似,只能读取XML文档,不能写XML文档。
KissXML。它是基于DOM的解析库,基于TouchXML,主要的不同是可以写入XML文档。
TinyXML。它是基于C++语言的COM模式解析库,他可以读XML文档,不支持XPath。
GDataXML。它是基于DOM模式的解析库,由Google开发,可以读取XML文档,支持XPath查询。
14.2.3  JSON文档结构  
14.2.4  JSON数据解码
json比较成熟,在ios上有很多框架可以进行JSON的编码/解码
SBJson。它是比较老的JSON编码解码框架,原名是json-framework
TouchJSON。它也是比较老的JSON编码/解码框架,支持ARC和MRC
YAJL。它是比较优秀的JSON框架,基于SBJson进行了优化,底层api使用C编写,上层API使用Objective-C编写,使用者可以有多重不同的选择。它不支持ARC
NextiveJson
NSJSONSerialization
14.3  REST Web Service  
14.3.1  HTTP和HTTPS协议  
1. HTTP协议
2. HTTPS协议
14.3.2  同步GET请求方法  
14.3.3  异步GET请求方法 
 同步请求的用户体验不是很好,因此很多情况下我们会采用异步调用。
14.3.4  POST请求方式  
14.3.5  调用REST Web Service的插入、修改和删除方法  
14.4  使用轻量级网络请求框架MKNetworkKit  
14.4.1  ASIHTTPRequest、AFNetworking和MKNetworkKit比较 
表14-2 ASIHTTPRequest、AFNetworking和MKNetworkKit比较
&ASIHTTPRequest、AFNetworking和MKNetworkKit比较
ASIHTTPRequest
AFNetworking
MKNetworkKit
支持iOS和Mac OS X
同步异步请求
支持同步异步
只支持异步
只支持异步
图片缓存到内存
缓存离线请求
14.4.2  安装和配置MKNetworkKit框架  
14.4.3  网络请求  
14.4.4  下载数据  
14.4.5  上传数据  
14.5  反馈网络信息改善用户体验  
14.5.1  使用下拉刷新控件改善用户体验  
14.5.2  使用等待指示器控件  
14.5.3  使用网络等待指示器  
14.6  小结  
第15章 定位服务与地图应用
15.1  定位服务 
Wi-Fi。通过
15.1.1  定位服务编程  
15.1.2  地理信息反编码  
15.1.3  地理信息编码查询
& & & & & & & &
& & & & & & & & & 使用geohash将经纬度转成字符串。方便入库以及查询
& & & & & & & & & & et.com/Geohash/_4-201071.html#full-specs  
15.1.4  关于定位服务的测试  
15.2  使用iOS苹果地图  
15.2.1  显示地图  
15.2.2  添加标注  
15.2.3  跟踪用户位置变化  
15.3  使用程序外地图  
15.3.1  调用iOS苹果地图  
15.3.2  调用谷歌Web地图  
15.4  小结  
第三部分  进  阶  篇
第16章 升级?  
16.1  从iOS 6到iOS 7的升级  
16.1.1  iOS 7全新的扁平化设计  
16.1.2  屏幕适配问题  
16.1.3  iOS 7状态栏隐藏  
16.1.4  iOS 7状态栏样式设置  
16.2  从Xcode 4到Xcode 5的升级  
16.2.1  ARC与MRC之争  
16.2.2  故事板与xib之争  
16.2.3  找回普通显示屏的模拟器  
16.2.4  找回老版本的Interface Builder  
16.2.5  使用资源目录管理图片  
16.3  从iPhone 4到iPhone 5的升级  
16.3.1  屏幕适配问题  
16.3.2  从32位到64位的升级  
16.4  小结  
第17章 iOS中的商业模式  
17.1  收费策略  
17.1.1  iOS如何赚钱  
产品定价
植入广告。苹果自身带有
17.1.2  避免定价策略误区  
17.1.3  免费软件的艺术  
17.1.4  在适当的时间、适当的地点植入广告  
17.1.5  尝试不同的盈利模式  
上面提到,在要应用保持良好的收益,经常做一些分析是很有必要的。知己知彼,百战不殆。从产品自身角度、市场角度、
客户群体、竞争对手、合作伙伴、用户价值等方面分析,不断地完善我们的应用。
17.2  使用苹果iAd广告  
17.2.1  横幅广告 
在
直接从对象库中拖曳的这种方式在横屏和竖屏切换时不够灵活,在应对
17.2.2  插页广告 
17.2.3  查看你的收入  
17.3  使用谷歌AdMob广告  
17.3.1  注册AdMob账号和管理应用  
17.3.2  下载谷歌AdMob Ads SDK和示例代码  
17.3.3  添加AdMob横幅广告  
17.3.4  添加AdMob插页广告  
17.3.5  为广告提交用户和位置信息  
17.3.6  搜索广告  
17.3.7  查看你的收入  
17.4  应用内购买 
 应用内购买(
内置产品类型。需要交付的产品已经在程序内部,通常用于一些功能的锁定,这些功能原本是在程序中,但
是需要购买这些功能才能解锁,开发人员需要记录这些购买记录,并且能够备份和恢复这些信息。它的优点
是能很快交付产品给客户。大多数的内置产品应用为非消耗型产品。这种模式是我们本书重点介绍的模式。
服务器产品类型。在这种模式下,需要开发商或运行商提供另外的服务器,将要交付的内容、服务和订阅
的产品更新到服务器上。应用程序与服务器和
17.4.1  概述  
17.4.2  测试环境搭建
17.4.3  在程序中实现应用内购买  
17.4.4  测试应用内购买  
17.5  小结  
第18章 找出程序中的bug--调试  
18.1  Xcode调试工具  
18.1.1  定位编译错误  
18.1.2  查看和显示日志  
18.1.3  设置和查看断点  
18.1.4  调试工具栏  
18.1.5  输出窗口  
18.1.6  变量查看窗口  
18.1.7  查看线程  
18.2  日志与断言输出  
18.2.1  使用NSLog函数  
18.2.2  使用NSAssert宏  
18.2.3  移除NSLog和NSAssert  
18.3  LLDB调试工具  
18.3.1  断点命令  
18.3.2  观察点命令  
18.3.3  查看变量和计算表达式命令  
18.4  异常堆栈报告分析  
18.4.1  跟踪异常堆栈  
18.4.2  分析堆栈报告  
18.5  在iOS设备上调试  
18.5.1  创建开发者证书  
18.5.2  设备注册  
18.5.3  创建App ID  
18.5.4  创建配置概要文件  
18.5.5  设备调试  
18.6  Xcode设备管理工具  
18.6.1  管理设备配置概要文件  
18.6.2  查看设备上的应用程序  
18.6.3  设备控制台  
18.6.4  设备日志  
18.7  小结  
第19章 测试驱动下的iOS应用开发  
19.1  测试驱动的软件开发概述  
19.1.1  测试驱动的软件开发流程  
19.1.2  测试驱动的软件开发案例  
19.1.3  iOS 7单元测试框架  
19.2  使用XCTest测试框架  
19.2.1  添加XCTest到工程  
19.2.2  编写XCTest测试方法  
19.2.3  运行测试程序  
19.2.4  分析测试报告  
19.3  iOS单元测试最佳实践  
19.3.1  测试数据持久层  
19.3.2  测试业务逻辑层  
19.3.3  测试表示层  
19.4  小结  
第20章 让你的程序“飞”起来--性能优化  
20.1  内存优化 
MRR。也称为
 内存泄漏问题的解决  
内存泄漏指当一个对象或变量在使用完成后没有释放掉,这个对象一直占用着内存,直到应用停止。
提 供 了 两 种 工 具 帮助 查 找 泄 漏点 :和。
有很多跟踪模板可以动
态分析和跟踪内存、
20.1.2  查找和解决僵尸对象  
存泄漏是指一个对象或变量在使用完成后没有释放掉。如果我们走向了另外一个极端,会是什么样的呢?
这就导致了过度释放问题,从而使对象“僵尸化”,该对象被称为僵尸对象。如果一个对象已经被释放过了,或
者调用者没有这个对象的所有权却释放了它,就会造成过度释放,产生僵尸对象。
对于很多人来说,僵尸对象或许听起来很恐怖,也很陌生,但是如果说起EXEC_BAD_ACCESS异常,可能大
家并不陌生。
20.1.3  autorelease的使用问题  
20.1.4  响应内存警告 
好的应用应该在系统内存警告的情况下释放一些可以重新创建的资源。在 
20.1.5  选择xib还是故事板  
故事板是苹果在
20.2  优化资源文件  
20.2.1  图片文件优化  
图片文件优化包括文件格式和文件大小的优化。在移动设备中,支持的图片格式主要是
综上所述,如果在本地资源情况下,我们应该优先使用
20.2.2  音频文件优化  
WAV文件。
20.3  延迟加载 
延迟加载( 
20.3.1  资源文件的延迟加载  
20.3.2  故事板和xib文件的延迟加载  
20.4  数据持久化的优化  
20.4.1  使用文件  
20.4.2  使用SQLite数据库  
20.4.3  使用Core Data  
20.5  可重用对象的使用  
20.5.1  表视图中的可重用对象  
20.5.2  集合视图中的可重用对象  
20.5.3  地图视图中的可重用对象  
20.6  并发处理与多核CPU  
20.6.1  主线程阻塞问题  
20.6.2  选择NSThread还是GCD  
20.7  编译参数  
20.8  小结  
第21章 管理好你的程序代码--代码版本控制  
21.1  概述  
21.1.1  版本控制历史 
集中管理模式。这以一个服务器作为代码库,团队人员本地没有代码库只能与服务器进行交互。这种类型
的版本控制工具有
21.1.2  基本概念
代码库(repository)。存放项目代码以及历史备份的地方。
分支( branch)。为了验证和实验一些想法、版本发布、缺陷修改等需要,建立一个开发主干之外的分支,
这个分支被隔离在各自的开发线上。当改变一个分支中的文件时,这些更改不会出现在开发主干和其他分
合并分支( merging branch)。完成某分支工作后,将该分支上的工作成果合并到主分支上。
签出( check out)。从代码库获得文件或目录,将其作为副本保存在工作目录下,此副本包含了指定代码
库的最新版本。
提交( commit)。将工作目录中修改的文件或目录作为新版本复制回代码库。
冲突( conflict)。有时候提交文件或目录时可能会遇到冲突,当两个或多个开发人员更改文件中的一些相
同行时,将发生冲突。
解决( resolution)。遇到冲突时,需要人为干预解决,这必须通过手动编辑该文件进行处理,必须有人逐
行检查该文件,以接受一组更改并删除另一组更改。除非冲突解决,否则存在冲突的文件无法成功提交到
代码库中。
索引( index)。
21.2  Git代码版本控制  
21.2.1  服务器搭建  
21.2.2  Gitolite服务器管理  
21.2.3  Git常用命令  
21.2.4  Git分支  
21.2.5  Git协同开发  
21.2.6  Xcode 5中Git的配置与使用  
21.3  GitHub代码托管服务  
21.3.1  创建和配置GitHub账号  
21.3.2  创建代码库  
21.3.3  派生代码库  
21.3.4  使用GitHub协同开发  
21.3.5  管理组织  
21.4  小结  
第22章 把你的应用放到App Store上  
22.1  收官  
22.1.1  在Xcode 5下添加图标 
22.1.2  Xcode 5添加启动界面 
 启动界面是应用启动与进入到第一个屏幕之间的界面。如果应用没有启动界面,那么在进入第一个屏幕之
前就是黑屏,这会影响用户体验。虽然这在开发阶段没有什么影响,但是在应用发布前,还是需要添加启动
22.1.3  调整Identity和Deployment Info属性 
 在编程过程中,有些产品的属性并不影响开发,即便属性设置不正确,一般也不会有什么影响。但是在产品
发布时,正确地设置这些属性就很重要了。如果设置不正确,就会影响产品的发布。这些产品属性主要是
22.1.4  为发布进行编译  
从编写到发布应用会经历
22.1.5  应用打包
  在把应用上传到
22.2  发布流程 
 程序打包后,就可以发布我们的应用了。发布应用在
22.2.1  创建应用及基本信息  
22.2.2  应用定价信息 
22.2.3  最后的信息输入
  1.版本信息
版本信息输入页面如图
元数据输入页面如图
3.应用审核信息
应用审核信息输入页面如图
4.最终用户许可协议
最终用户许可协议输入页面如图
5.上传应用图标和截图
上传应用图标和截图填写页面如图
22.2.4  上传应用  
22.3  审核不通过的常见原因  
1.功能问题
在发布应用之前,我们一定要认真测试,如果在审核中出现了程序崩溃或者程序错误,无疑这是会被审核小
组拒绝的。如果我们想发布一个演示版的程序,通过它给客户演示,这也是不会通过的。应用的功能与描述不相
符,或者应用中含有欺诈虚假的功能,应用都会被拒绝。比如在应用中有某个按钮,但是点击这个按钮时没有反
应或者不能点击,这样的程序也是不会通过的。
苹果不允许访问私有2.用户界面问题
苹果审核指南规定开发者的应用必须遵守苹果《 3.商业问题
要发布的应用,首先不能侵犯苹果公司的商标及版权。简单地说,在应用中不能出现苹果的图标,不能使用
苹果公司现在产品的类似名字为应用命名,涉及
及第三方版权的信息,开发者就要仔细考虑考虑了。有些开发者的版权法律意识比较淡薄,总会忽视这一点,然
而这一点是非常致命的。苹果对于这种被起诉的侵权应用,最轻的处罚是下架应用,有时需要将开发者账户里的
钱转到起诉者账户。严重的就是,起诉者将你告上法庭,除了自己账户中的钱被扣除外,还要另赔付起诉者相关
4.不当内容
一些不合适、不和谐的内容,苹果当然不会允许上架的。比如具有诽谤、人身攻击的应用,含有暴力倾向的
应用,低俗、令人反感、厌恶的应用,赤裸裸的色情应用等。含有赌博性质的应用必须并且必须明确表示苹果不
是发起者,也没有以任何方式参与活动。
5.其他问题
关于宗教、文化或种族群体的应用或评论包含诽谤性、攻击性或自私性内容的应用不会被通过,使用第三方
支付的应用会被拒绝,模仿
22.4  小结  
第四部分  实  战  篇
第23章 重构MyNotes应用--iOS网络通信中的设计模式与架构设计  
23.1  移动网络通信应用的分层架构设计  
23.2  基于委托模式实现  
23.2.1  网络通信与委托模式  
23.2.2  在异步网络通信中使用委托模式实现分层架构设计  
23.2.3  类图  
23.2.4  时序图  
23.2.5  数据持久层重构  
23.2.6  业务逻辑层的代码实现  
23.2.7  表示层的代码实现  
23.3  基于观察者模式的通知机制实现  
23.3.1  观察者模式的通知机制回顾  
23.3.2  异步网络通信中通知机制的分层架构设计  
23.3.3  类图  
23.3.4  时序图  
23.3.5  数据持久层的重构  
23.3.6  业务逻辑层的代码实现  
23.3.7  表示层的代码实现  
23.4  小结  
第24章 iOS敏捷开发项目实战--2016里约热内卢奥运会应用开发及App Store发布  
24.1  应用分析与设计  
24.1.1  应用概述  
24.1.2  需求分析  
24.1.3  原型设计  
24.1.4  数据库设计  
24.1.5  架构设计  
24.2  iOS敏捷开发  
24.2.1  敏捷开发宣言  
24.2.2  iOS适合敏捷开发吗  
24.2.3  iOS敏捷开发最佳实践  
24.3  任务1:创建应用基本工作空间  
24.4  任务2:信息系统层与持久层开发  
24.4.1  迭代2.1:编写数据库DDL脚本  
24.4.2  迭代2.2:插入初始数据到数据库  
24.4.3  迭代2.3:编写实体类  
24.4.4  迭代2.4:DAO类XCTest单元测试  
24.4.5  迭代2.5:编写DAO类  
24.4.6  迭代2.6:发布到GitHub  
24.5  任务3:业务逻辑层开发  
24.5.1  迭代3.1:比赛项目业务逻辑类XCTest单元测试  
24.5.2  迭代3.2:编写比赛项目业务逻辑类  
24.5.3  迭代3.3:比赛日程业务逻辑类XCTest单元测试  
24.5.4  迭代3.4:编写比赛日程业务逻辑类  
24.5.5  迭代3.5:发布到GitHub  
24.6  任务4:表示层开发  
24.6.1  迭代4.1:使用资源目录管理图片和图标资源  
24.6.2  迭代4.3:根据原型设计初步设计iPad故事板  
24.6.3  迭代4.3:根据原型设计初步设计iPhone故事板  
24.6.4  迭代4.4:首页模块  
24.6.5  迭代4.5:比赛项目模块  
24.6.6  迭代4.6:比赛日程模块  
24.6.7  迭代4.7:倒计时模块表示层  
24.6.8  迭代4.8:关于我们模块表示层  
24.6.9  迭代4.9:发布到GitHub  
24.7  任务5:收工  
24.7.1  迭代5.1:添加图标  
24.7.2  迭代5.2:设计和添加启动界面  
24.7.3  迭代5.3:植入谷歌AdMob横幅广告  
24.7.4  迭代5.4:性能测试与改善  
24.7.5  迭代5.5:发布到GitHub  
24.7.6  迭代5.6:在App Store上发布应用  
24.8  小结




参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49712次
积分:3635
积分:3635
排名:第5949名
原创:315篇
转载:105篇
(2)(10)(14)(28)(8)(27)(31)(1)(15)(80)(201)(3)}

我要回帖

更多关于 ios9.2怎么降到9.1 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信