iPad与iPhone开发的区别
- UIpopoverController和UISplitViewController是iPad专用的视图控制器
-
- UIPopiverController没有与之对应的视图类.可以设定内容视图的带下.指定一个区域呈现视图,等方法
-
- UISplitViewContrtoller是iPad中构建导航模式的基础,可以呈现屏幕分栏视图效果,竖屏情况下,左侧的栏会隐藏起来(占据320点).
iOS分层架构设计
- 设计模式只是解决某一特定问题测策略,是面向局部的,而一个架构设计是宏观地,全面地,有机地将这些设计模式组织起来解决整个应用系统的方案. 衡量标注:可复用性和可扩展性软件设计的原则是提高软件的”可复用性’和”可扩展性”
- 通用的低耦合的企业级框架主要有 :表示层,业务逻辑层,数据持久层,细心系统层
- 库是一些没有买呢函数的程序代码的集合. 包括静态库和动态链接库静态链接库可以编译到你的执行代码中,应用程序可以在没有静态库的环境下运行,动态连接库不可以编译到你的执行代码中,应用程序必须在有链接库的环境下运行.
数据持久化
- 沙河目录的结构:Dicuments,Library(包含perference和caches目录,perference用于存放用户偏好设置),tmp
- 数据持久化方式
-
- 属性列表(一般用于少量数据)
-
-
- 一种XML文件
-
-
- 对象归档(对象状态可以保存到归档文件中)
-
-
- 一种序列化方式.为了方便传输,先把归档对象序列化为一个文件,然后通过反归档将数据恢复到对象中.不是和大量数据和频繁数据读写情况.需要遵守NSCoding协议.NSKeyedArchiver,NSkeyedUnarchiver
-
-
- SQLite数据库
-
-
- sqlite运行时与使用它的应用程序之间公用相同的进程空间.而不是单独的两个进程
-
-
-
- 常见的数据类型:INTEGER:有符号的证书类型;REAL:浮点类型;TEXT:字符串类型,采用utf8和utf16编码;BLOB:二进制大对象类型,可以存放任何二进制数据
-
-
-
- 创建数据库:splite3_open,sqlite2_exec;splite3_close
-
-
-
- 更多见文章iOS数据库操作(基于C语言API)
-
-
-
- Core Data(基于高级数据持久化API,其底层最终是SQLite数据库,二进制文件和内存数据保存,开发人员可以不用关心数据存储的细节,不用使用SQL语句,不用面对C函数)
-
分层框架设计
- 工作控件是多和工程的集合。
- 库是一些没有main函数的程序代码集合,静态库不能有swift代码
-
- *
WebService
- 数据交互的格式一般分为 纯文本格式、XML格式、json格式等
XML文档格式
- 声明 < ?xml version= “1.0” encoding = “UTF-8”?>声明了1.0版本,UTF-8编码
- 根元素 只有一个,开始标签和结束标签必须一致
- 子元素 所有子元素都要有结束标签,< a>XXX< /a>,如果开始结束标签没内容,可以用 < a/ >成为空标签
- 属性 属性定义在开始标签中,一个元素不能有多个同名属性,,id 即为属性,1为值
- 命名空间 为XML文档提供名字唯一的元素和属性
- 限定名 由命名空间引出的,定义了元素和属性的合法表示符
XML文档解析
- SAX 基于事件驱动的 程序从上到下读XML文档,遇到开始标签、结束标签、属性等,就会触发相应的事件。缺点: 只能读不能写,优点:解析速度快,iOS推荐使用
- DOM 将XML文档进行树状结构进行分析,获取节点内容及相关属性或者进行增删改节点的内容。 一次性读入内存,如果文档较大,速度较慢
- iOS提供了两个框架
- NSXML 基于SAX,iOS SDK默认的解析框架,不支持DOM
- libxml2 基于C语言的解析方式,支持SAX、DOM
- 第三方框架:TBXML/TouchXML/KissXML…
- NSXMLParser,NSXMLParserDelegate是NSXML框架的核心,主要工作在delegate中实现,下面列出部分的
-
- (void)parserDidStartDocument:(NSXMLParser *)parser开始解析的时候会调用这个方法
-
- (void)parser: didStartElement: namespaceURI: qualifiedName: attributes: 遇到一个开始标签的时候回触发,nameSpaceURI是命名空间,qualifiedName是限定名,ttributes是字典类型的属性集合
-
- (void)parser: foundCharacters:遇到字符串回调用
-
- (void)parser: didEndElement: namespaceURI: qualifiedName:遇到结束标签的时候会调用
-
- (void)parserDidEndDocument: 文档结束时触发
json数据
- 一种轻量级数据交互格式
- json数组是值得有序集合,在[]之间,值之间用”,”隔开,值可以是双引号括起来的字符串,数值,true,false,null,对象或者数组,而且这些结构可以嵌套.
- 解码:把数据从json文档读取处理的过程.
- 常见的解码库:
- SBJson 比较老的json解码库,支持ARC
- TouchJson 比较老的json解码库,支持MRC,ARC
- JSONKit 代码量小,解码速度快,不支持ARC
- NextiveJson 非常优秀的json框架,不支持ARC
- NSJSONSerialization iOS5之后苹果提供的API,支持ARC,iOS5之后首选
- 在iOS平台,对json文档要求比较严格,每个json数据项目的名称必须由双引号括起来,不能使用单引号或者没有引号
- 使用JSONObjectWithData: options: error:进行解码,options参数的含义
- NSJSONReadingMutableContainers = (1UL << 0),指定解析返回的是可变的数组或者字典,如果以后需要修改这个结果,这个常量是非常合适额选择
- NSJSONReadingMutableLeaves = (1UL << 1),指定叶节点是可变字符串
- NSJSONReadingAllowFragments = (1UL << 2)指定顶级节点而已不是数组或者字典
- [NSJSONSerialization dataWithJSONObject: options: error:] json编码
RESTWebService
- 一种使用HTTP并遵守REST原则的web service,使用URI来定位源.
- web service数据交互使用json或者xml,web service所支持的请求包括post,get,put,delete请求等.
HTTP/HTTPS
- HTTP是Hypertext Transfer Protocol的缩写,即超文本传输协议.
- 网络中使用的基本协议是TCP/IP协议,目前广泛采用的HTTP,HTTPS,FTP,Archie和Gopher等都是建立在TCP/IP的协议之上的应用层协议,不同的协议对应着不同的应用.
- HTTP是一个属于应用层的面向对象的协议,其简介快速的方式适用于分布式超文本传输.
- HTTP 1.1共有8种请求方法(OPTIONS,HEAD, GET,POST,PUT,DELETE,TRACEH和CONNECT)作为web服务器,必须实现GET和HEAD方法.其它方法是可选的.
- GET方法是向指定资源发出请求,只用在读取数据,不安全
- POST方法是向指定资源提交数据,请求服务器处理,安全
- HTTPS是Hypertext Transfer Protocal Secure,超文本传输安全协议.是超文本传输协议和SSL组合.用以提供加密通信以及对网络服务器的鉴定
- 简单的说,HTTPS是HTTP的升级版本,主要区别为
- HTTPS使用https://代替http://
- HTTPS使用443端口,而HTTP使用80端口与TCP/IP进行通信
- *
相关知识
- NSAssert(XXXX,XXX )是断言函数,第一个参数为假时抛出异常,第二个参数为报错信息