day02

1) iOS 中KVC、KVO总结及区别

1、KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。

KVC的常用方法:
- (id)valueForKey:(NSString *)key; -(void)setValue:(id)value forKey:(NSString *)key;

valueForKey的方法根据key的值读取对象的属性,setValue:forKey:是根据key的值来写对象的属性。

注意:

(1). key的值必须正确,如果拼写错误,会出现异常
(2). 当key的值是没有定义的,valueForUndefinedKey:这个方法会被调用,如果你自己写了这个方法,key的值出错就会调用到这里来
(3). 因为类key反复嵌套,所以有个keyPath的概念,keyPath就是用.号来把一个一个key链接起来,这样就可以根据这个路径访问下去
(4). NSArray/NSSet等都支持KVC

2、KVO的是KeyValue Observe的缩写,中文是键值观察。这是一个典型的观察者模式,观察者在键值改变时会得到通知。iOS中有个Notification的机制,也可以获得通知,但这个机制需要有个Center,相比之下KVO更加简洁而直接

KVO的使用也很简单,就是简单的3步。
  1.注册需要观察的对象的属性addObserver:forKeyPath:options:context:
  2.实现observeValueForKeyPath:ofObject:change:context:方法,这个方法当观察的属性变化时会自动调用
  3.取消注册观察removeObserver:forKeyPath:context:
3.KVC和KVO的区别和联系:

KVC的主要作用:给模型中的属性赋值和取值
KVO的主要作用:监听模型中属性值的改变
KVC是路径访问的规范,KVO则是观察某个变量的变化过程
KVC/KVO类似于代理,通知,都是一种通讯方法。

2)类方法和实例方法的区别(调用)

类方法

  1. 类方法是属于类对象的
  2. 类方法只能通过类对象调用
  3. 类方法中的self是类对象
  4. 类方法可以调用其他的类方法
  5. 类方法中不能访问成员变量
  6. 类方法中不能直接调用对象方法

实例方法:

  1. 实例方法是属于实例对象的
  2. 实例方法只能通过实例对象调用
  3. 实例方法中的self是实例对象
  4. 实例方法中可以访问成员变量
  5. 实例方法中直接调用实例方法
  6. 实例方法中也可以调用类方法(通过类名)

3) 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中显示不全的问题。

4) 继承(Inherit)和类别(category)、扩展(extension)的区别

1.分类

iOS中,当原有类的方法不够用时,这时候分类就出现了。category是在现有类的基础上添加新的方法,利用objective-c 的动态运行时分配机制,可以为现有类添加新方法。可以在分类中添加方法和成员变量,但是添加的成员变量不会自动生成setter和getter方法,需要在实现部分给出实现。

.h部分:



.m部分:


2.扩展

iOS中的extension就是匿名的分类,只有头文件没有实现文件。只能扩展方法,不能添加成员变量。扩展的方法只能在原类中实现。例如你扩展NSString,那么你只能在NSString的.m实现(这是不可能的),所以尽量少用扩展。用分类就可以了。

如下图扩展标志:


3.继承

学习objective-c语言没有人是不知道继承,继承在面向对象语言是非常重要的。在iOS中继承是单继承,既只能有一个父类。在继承中,子类可以使用父类的方法和变量,当子类想对本类或者父类的变量进行初始化,那么需要重写init()方法 。父类也可以访问子类的方法和成员变量。

如下图MainViewController 继承自UIViewController。


5) 谈谈你对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗?

  • MVC就是Model-View-Controller的缩写,M指的是业务模型,V指的是用户页面,C指的是控制器。MVC是架构模式,是讲M和V的代码分离,从而使同那个一个程序可以使用不同的表现形式。

  • 单例,代理,观察者,工厂模式等

  • 单例模式:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

    • 单例模式的要点:显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

    • 单例模式的优点:

实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。

灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程

  • 代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用.比如一个工厂生产了产品,并不想直接卖给用户,而是搞了很多代理商,用户可以直接找代理商买东西,代理商从工厂进货.常见的如QQ的自动回复就属于代理拦截,代理模式在iphone中得到广泛应用.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,134评论 30 470
  • 当当搞活动买到的书就是不靠谱,这已经是第3次了,这次我是有时间跟它讲一讲了。要求退换货。 结果是一大电话,人家二话...
    木木sani阅读 257评论 0 0
  • 有一年大概是九岁,妹妹五岁,弟弟三岁。爸爸妈妈吵架了他们都不在家。 我就记得我家里还喂着猪,晚上喂好猪,我都不记得...
    柳絮轻舞阅读 295评论 0 0
  • 奔跑吧兄弟有搞抽奖活动吗【浙江-卫视奔跑吧兄弟】【电话;010-5670-6235】 【浙江-卫视奔跑吧兄弟】【电...
    f514d171204c阅读 174评论 0 1