Swift面试题系列三

10.IOS7、IOS8、IOS9的区别

iOS7.0

1.iOS 7是iOS面世以来在用户界面上做出改变最大的一个操作系统。iOS 7抛弃了以往的拟物化设计,而采用了扁平化设计。苹果在重新思考 iOS 的设计时,更希望围绕 iOS 中深受人们喜爱的元素,打造一种更加简单实用而又妙趣横生的用户体验。最终,苹果优化了 iOS 的工作方式,并以此为基础重新设计了 iOS 的外观。之所以这样做,是因为能够服务于体验的设计才是出色的设计。
  2.控制中心
  控制中心为你建立起快速通路,便于你使用那些随时急需的控制选项和 app。只需从任意屏幕 (包括锁定屏幕) 向上轻扫,即可切换到飞行模式,打开或关闭无线局域网,调整屏幕亮度等等,你甚至还可以使用全新的手电筒进行照明。如此众多的操控,任你一挥而就。
  3.增强的通知中心
  通知中心可让你随时掌握新邮件、未接来电、待办事项和更多信息。一个名为 "今天" 的新功能可为你总结今日的动态信息,十分便捷。扫一眼你的iPhone,你就知道今天是否是某人的生日,你是否需要雨伞,或交通状况会否影响你的上下班出行,你甚至还能收到关于明天的提醒。你可以从任何屏幕 (包括锁定屏幕) 访问通知中心。只需向下轻扫,即可迅速掌握各类动态信息。
  需要注意的是,之所以说是一个新功能,是因为iOS 7的通知中心较以往而言,变成了三栏——今天,全部,未读通知。
  4.更加智能的多任务处理
  多任务处理始终是在 App 之间切换的捷径。因此,它变得更加智能。因为 iOS 7 会了解你喜欢何时使用 App,并在你启动 App 之前更新你的内容。因此,如果你经常在上午 9 点查看最喜爱的社交 App,那么你所关注的相关内容届时将准备就绪,待你随时取用。这就是 iOS 7 的多任务处理功能,你还没做,它就已经为你想到了。
  iOS 中的多任务处理变成卡片式,只需向上轻扫便可以关闭程序。
  5.更强大的相机
  iOS 7 的相机功能将你所有的拍摄模式置于显要位置,包括照片、视频、全景模式和新增的 Square 模式。轻扫一下,你就能以你喜欢的方式拍摄你想拍的画面,瞬间即成。而全新滤镜可让你更好地享受每张照片带来的乐趣。你可为照片增添复古味道,提升对比度,或感受黑白魅力,任你尽情挥洒艺术创意。
  6.智能相册
  现有更快速、更轻松、更愉悦的方式,让你在记忆的长廊中自如穿行。特别介绍精选、时刻与年度,它们能根据时间和地点智能地分组管理你的照片和视频。轻点年度,你所有的照片即会充满屏幕。而地点将你拍摄照片的场所记录下来。这样,你就能快速找到任何时间、任何地点拍摄的内容。
  7.AirDrop文件共享
  通过文本讯息或电子邮件发送照片或文档,是没问题的。但如果某人就在你旁边,文字讯息或电子邮件会突然让人感觉大费周章。进入适用于iOS 的 AirDrop,它能让你通过共享按钮,快速、轻松地共享照片、视频、通讯录,以及任何 App 中的一切。只需轻点共享,然后选择你的共享对象。AirDrop 会使用无线网络和蓝牙搞定其余的事情,不仅无需设置,而且传输经过加密,可严格保障共享内容的安全。
  8.改进的Safari
  iOS 7 中的 Safari令浏览更强大、更出色、更美观。按钮和工具栏,如综合智能搜索栏,会隐藏起来,除非你通过滚动操作将其调出。因此,你会在屏幕上看到比以往更多的内容。只要轻扫一下,你就能向前或向后翻动页面。一切设计,都为令你的浏览快速顺畅,全无障碍。
  综合智能搜索栏、全新标签视图、共享的链接和阅读列表让你的Safari更加强大。
  9.iCloud 钥匙串
  你在网上做许多事情都需要密码。但iCloud可以为你记住你的帐户名称、密码和信用卡号码。无论你何时需要登入网站或在线购买,Safari 都能自动输入这些信息。它可在所有经过你许可的 iOS 7 设备和运行 OS XMavericks 的 Mac 电脑上使用。而且 256-bit AES 加密令它极为安全。
  10.正式版Siri
  iOS 7 中的 Siri拥有新外观、新声音和新功能。它的界面经过重新设计,以淡入视图浮现于任意屏幕画面的最上层。Siri 回答问题的速度更快,还能查询更多信息源,如维基百科。它可以承担更多任务,如回电话、播放语音邮件、调节屏幕亮度,以及更多。
  11.App Store新功能
  我的附近的热门 App 是 iOS 7 推出的 App Store 新功能,能够显示与你当前位置相关的一系列热门 App。另外,如果你觉得 App Store 的精彩内容太多而难以取舍,欲购清单可给你些思考的时间。你可以随时将 App 保存在欲购清单里,稍后做好决定再来购买。iOS 7 还能让你的 App 自动保持更新,再不需要你费心。自动更新的另一个好处是:你再也无需关注那些提示 App 更新的红色小徽章了。

iOS8.0

1.size classes的推出
size classes的产生对于屏幕的适配提供了便利,没必要获取屏幕的尺寸来进行操作了,将长宽尺寸按照设备类型和方向归类为 regular 和 compact两类,通过为不同的设备定义尺寸分类,用来定义同类型的操作特性,美中不足的是只能相对于父控件来适配。
2.Cloud Kit
其作用就是将数据原封不动的使用 Cloud Kit 向云端获取数据和存储数据,自我感觉作用像 “百度云管家”
在我们使用位置服务和推送消息时必须经过用户授权
3.新增 Photos.framework 框架
这个框架的主要作用就是和我们苹果自带的 photo 应用交互,它对于 Assets Library (照片和视频的选取)的主要优势在于能够和iCloud照片交互。还能监视其他应用对于照片的改变.
第三方软件也可以通过 touchID验证(支付宝)。
4.HeatKit框架的推出
我们绑定健康应用后就可以查看很多的健康信息包括步数、跑步距离等等
5.Spotlight
当我们要查找一个联系人或者软件,Spotlight就可以快键方便的查出,还能帮你在互联网和维基百科提供匹配的信息

iOS9.0

经过iOS7和iOS8两次重量级的变革和更新,iOS9 SDK相对比较平静,但是还是有一些变化,那么我们就瞧一瞧!

  1. 值得兴奋的一点是 Xcode7 免证书真机调试。但是不要兴奋太早,只是简单的调试,如果我们做推送、地图功能是还是得有证书。其调试方法有现有教程:http://www.cnblogs.com/wahy/p/5004623.html
  2. UIAlertView过期,用UIAlertController可以完全替代,而且效果很好的.
  3. tableView刷新有时比较坑,如果全部刷新不好使,我们可以使用局部刷新的方法
  4. URL scheme
    当我们要用到分享或者调到其他平台授权的功能时,在iOS8中可以比较随意,但是在iOS9中我们需要将要外部调用的URL scheme列为白名单,才可以完成跳转
  5. iOS8 自动开启多点触控,但是iOS9默认不开启
    在viewDidLoad里面添加:self.view.multipleTouchEnabled = YES

6.iOS9增加了语言后面的地区代码, 中国 zh-Hanz–>zh-hanz-CN

7.Xcode7打包不了老项目,报错bitcode,解决方法:build setting中关闭bitcode,设置 enable bitcode 为NO

8.IOS9中部分字体可能间距会变大,label中显示不全的问题。

11.frame和bounds的区别

frame指的是:该view在父view坐标系统中的位置和大小,frame是以父视图左上角位置为(0,0)点。
bounds指的是:该view在本身坐标系统中 的位置和大小,bounds是以自身的左上角为(0.0)点算起。

12.几种持久化的区别:plist、NSUserDefaults、归档、数据库(sqlite和coreData)

1.plist文件:
property list 属性列表文件,文件的内容只能是 NSString NSNumber NSDate NSData NSArray NSDictionary类的对象内容,不能保存其他类型数据。
作用: 对一些登陆注册信息或者程序的配置信息(小数据)进行持久化存储。

2.归档(也称对象序列化,对象持久化存储)就是用某种打包格式将对象保存到本地的文件,以便以后读回该对象的内容;解档(也称归档/读档)就是把归档的对象文件,读成原来的对象的过程。

3.NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息。

4.数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称..DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

其中sqlite和coreData的区别:

a.使用方便性。实际上,一个成熟的工程中一定是对数据持久化进行了封装的,因此底层使用的到底是core data还是sqlite,不应该被业务逻辑开发者关心。因此,即使习惯写SQL查询的人,也应该避免在业务逻辑中直接编写SQL语句。
b.存储性能,在写入性能上,因为都是使用的sqlite格式作为磁盘存储格式,因此其性能是一样的,如果你觉得用core data写的慢,很可能是你用sqlite的时候写的每条数据的内容没有core data时多,或者是你批量写入的时候每写入一条就调用了一次save。
c.查询性能,core data因为要兼容多种后端格式,因此查询时,其可用的语句比直接使用sqlite少,因此有些fetch实际上不是在sqlite中执行的。但这样未必 会降低查询效率。因为iPhone的flash memory速度还是很快的。我的经验是大部分时候,在内存不是很紧张时,直接fetch一个entity的所有数据然后在内存中做filter往往比使 用predicate在fetch时过滤更快。如果你觉的查询慢,很可能是查询方式有问题,可以把core data的debug模式打开,看一下到底执行了多少SQL语句,相信其中大部分是可以通过改写core data的调用方式避免的。
d.core data的一个比较大的痛点是多人合作开发的时候,管理coredata的模型需要很小心,尤其是合并的时候,他的data model是XML格式的,手动resolve比较烦心。
e.core data还有其他sql所不具备的优点,比如对undo的支持,多个context实现sketchbook类似的功能。为ManagedObject优化的row cash等。
f.另外core data是支持多线程的,但需要thread confinement的方式实现,使用了多线程之后可以最大化的防止阻塞主线程。

你可能感兴趣的:(Swift面试题系列三)