iOS-面试题-OC基础篇 (3) - (1)

前言:面试笔试都是必考语法知识点。请认真复习和深入研究OC。

目录:
iOS-面试题-OC基础篇 (1) - (84)
iOS-面试题-OC基础篇 (2) - (83)
iOS-面试题-OC基础篇 (3) - (1)

1. 设计模式?
设计模式:MVC 模式、单例模式、观察者模式、MVVM 模式、工厂模式、代理模式、策略模式、 适配器模式、模板模式、外观模式、创建模式
参考:http://blog.jobbole.com/20496/ 有23中设计模式

1.mvc 模式:model 保存应用模型和处理数据逻辑、view 负责 model 数据和交互控件的显示、 controller 负责 model 和 View 之间的通讯

2.单例模式:用一个静态方法返回这个类的对象。这个对象是全局唯一的。整个项目里面只开 辟一块内层,比如登录之后获取的用户数据存储、NSNotificationcenter、NSUserdefaults, sharedApplication。

 缺点:这块内层直到项目推出时才能释放。
 优势:使用简单,延时求值,易于跨模块, 便于资源共享控制,方便传值和修改单例的属性 敏捷原则:单一职责原则

注意事项:确保使用者只能通过 getInstance方法才能获得,单例类的唯一实例。oc中,重写 allocWithZone方法,保证即使用户用 alloc方法直接创建单例类的实例,返回的也只是此单例 类的唯一静态变量。

3.观察者模式:通过添加观察者来观察某个对象的实例变量的变化、当该被观察的对象发生时, 发出通知,通知观察者。如常用的导航栏渐变。

应用场景:一般为 model 层对 controller 和 view 进行的通知方式,不关心谁去接收,只负责发布信息。

 优势:解耦合 敏捷原则:接口隔 离原则,开放-封闭原则 
 实例:通知中心,注册通知中心,任何位置可以发送消息,注册观察 者的对象可以接收。

4.工厂模式:快速创建对象的方式。将对象的创建和属性赋值封装成类方法,如:创建常用按 钮、textFeild 等,forState 这些枚举值不用反复写,可以使调用工厂方法的地方代码更加简 洁。

应用场景:工厂方式创建类的实例,多与proxy模式配合,创建可替换代理类。

 优势:易于替换,面向抽象编程,application只与抽象工厂和易变类的共性抽象类发生调用关 系。
 敏捷原则:DIP依赖倒置原则

实例:项目部署环境中依赖多个不同类型的数据库时,需要使用工厂配合proxy完成易用性替换 注意事项:项目初期,软件结构和需求都没有稳定下来时,不建议使用此模式,因为其劣势也 很明显,增加了代码的复杂度,增加了调用层次,增加了内存负担。所以要注意防止模式的滥 用。

  1. 代理模式:代理模式给某一个对象􏰀供一个代理对象,并由代理对象控制对源对象的引用。

如招人干活,干完告诉我。常见的如QQ的自动回复就属于代理拦截,代理模式在iphone中得到 广泛应用。有点像c++中多继承。增加对象的方法和属性。代理模式使项目的逻辑结构比较直观, 比如tableView的delegate和DataSource。

 优势:解耦合
 敏捷原则:开放-封闭原则。

代理的目 的是改变或传递控制链,允许一个类在某些特定时刻通知到其他类,而不需要获取到那些类的 指针,可以减少框架复杂度和耦合度。另外一点,代理可以理解为java中的回调监听机制的一 种类似。

  1. 策略模式:把一些独立的算法单独封装起来,如我以前有个车管的app里面根据北斗定位步标设备最后一次上传数据库的时间和车辆状态,来解析车辆当前的状态,数据库中的 16 进制的状 态(应用的是交通部的 808 协议),移动端获得将此状态字段转换成 2 进制,判断出车辆的 24 中状态。cell 多种响应效果

应用场景:定义算法族,封装起来,使他们之间可以相互替换。优势:使算法的变化独立于使 用算法的用户

敏捷原则:接口隔离原则;多用组合,少用继承;针对接口编程,而非实现。

实例:排序算法,NSArray的sortedArrayUsingSelector

  1. 适配器模式:根据不同的场景选择不同的对象,不如接手了一个旧代码,一进公司就得修改需 求,这时候的代码逻辑没法去反复理解,如我的一个老项目里面有一个认证功能将货主认证的 model 和车主认证 model 放同一个 model 里面,现在需要增加货主认证 model 属性修改,此时 就可以使用适配器了,原来其他地方还是走货住认证,因为企业也是货主的一种,可以建一个 新的货主 model 新需求走新的货主认证。

  2. 模板模式:比如现在的项目建的基类baseViewController,baseTableViewController,

  3. 外观模式:专门为外部􏰀供子类模块功能的 api 类,如果保险下单,只需要支付用你选的支付 方式和保险种类及填写的保险的必要信息一起传给下单的外观对象即可,在外观类里面封装了 有下单和支付两个子步簇,只需要将下保险的是否成功的结果返给下单界面就行。

  4. 创建模式:将一个复杂对象的构建与它表示分离。使得同样的构建过程可以创建不同的表示,假如在一个工具对象内对轨迹点去重复、纠偏、漂移过滤,例如一个对象对外提供该时间段轨迹停车时长和平均速度、平局耗油量等参数的接口。 拿到数组点在地图上展示一下就可以了,此数组对象的生成和使用可以分开。当然了这些复杂的操作都在服务端做了。

12.MVP 模式从经典的 MVC 模式演变而来,将 Controller 替换成 Presenter,依据 MVP 百度百科中 的解释,MVP 的优点相比较于 MVC 是完全分离 Model 与 View,Model 与 View 的信息传递只能通 过 Controller/Presenter,我查阅资料发现在其他平台上的 MVC 模式 View 与 Model 能否直接 通讯有着不同的说法,但在 iOS 开发中,Apple 是这么说的。在 MVC 下,所有的对象被归类为 一个 model,一个 view,或一个 controller。Model 持有数据,View 显示与用户交互的界面, 而 View Controller 调解 Model 和 View 之间的交互,在 iOS 开发中我按照 Model 与 View 无法 相互通讯来理解。

  1. MVVM(看第2道)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343