iOS开发指南 笔记

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

      • 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 )是断言函数,第一个参数为假时抛出异常,第二个参数为报错信息

未完待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值