iOS面试题目1

说明:题目在前,答案在后。希望大家看到题目的时候先思考一下答案,不要依赖答案,如果觉得答案不够具体,一定要上度娘找到自己满意的答案。代码要经常敲,题目要经常思考。如有错误,敬请雅正。

注意:每天我会推出10道面试题目,贵精不贵多,和大家一起进步。

题目:

1.什么是单例模式(singleton)
2.什么是KVC,KVO
3.什么是类别(Category),什么是扩展(Extension)
4.什么是协议代理模式(delegate)
5.什么是深拷贝和浅拷贝
6.各个属性修饰符的作用,和使用场景
7.#include和#import的区别
8.MRC下检测内存泄露的工具
9.didReceiveMemoryWarning和viewDidUnload的作用
10.你会几种反向传值方法,它们的区别是?

以下是答案:

1.什么是单例模式(singleton)
(1)概念:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

(2)注意事项:
1)、为单例对象实现一个静态实例,并初始化,然后设置成nil,
2)、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
3)、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
4)、适当实现allocWitheZone,copyWithZone,release(MRC)和autorelease(MRC)。

(3).应用场景: 1).反向传值 2).数据库

(4)可能会遇到的特殊问法:什么是懒汉模式,恶汉模式。其实就是问的单例。

2.什么是KVC,KVO?

(1) KVC全称是Key-value coding,翻译成键值编码。顾名思义,它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制。(setValueWithDictionary)

JSONModel:实现的原理,通过KVC和NSRuntime去实现把一个字典变换成模型数据的过程

(2) KVO全称是Key-value observing,翻译成键值观察。提供了一种当其它对象属性被修改的时候能通知当前对象的机制。再MVC大行其道的Cocoa中,KVO机制很适合实现model和controller类之间的通讯。

实际应用:用于观察UIScrollView的contentSize或者contentOffset
MJRefreh:就是通过KVO观察UIScrollView的contentSize或者contentOffset实现

3.什么是类别(Category),什么是扩展(Extension)
Category: 用于给class及其subclass添加新的方法,有自己单独的 .h 和 .m 文件,用于添加新方法,而不能添加新属性(property)。

Extension:常被称为是匿名的Category,用于给类添加新方法,但只作用于原始类,不作用于subclass, 只能对有implementation源代码的类写Extension,对于没有implementation源代码的类。
比如framework class,是不可以的,Extension可以给原始类添加新方法,以及新属性。

4.什么是协议代理模式(delegate)

(1)出现的原因 :
因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但具体怎么做,它不关心。

(2)本质:
在被代理对象当中拥有一个弱引用指针(deletege)指向代理对象,通过这个弱应用指针可以随时向代理对象发送消息,驱动被代理对象完成代理对象需要完成的工作.

(3)可能会遇到的关联问题:
指向代理的指针(weak,assgin)可以使用强引用指针么?不可以,因为在双向代理中,会造成双向强引用.

5.什么是深拷贝和浅拷贝?
浅拷贝:简单的指针复制,新指针和旧指针指向同一片内存地址。
深拷贝:新指针和旧指针各自使用不同的内存地址。

(1)如果对一个不可变对象复制,copy是指针复制,即浅拷贝,返回不可变对象;而mutableCopy则是对象复制,即深拷贝,返回的为可变对象。
(2)如果对一个可变对象复制,始终是深拷贝。

特殊的问题:有一个不可变的数组,里面放了一个字符串对象,对这个数组发送mutableCopy消息,问拷贝之后数组内的字 符串地址是否发生变化

6.各个属性修饰符的作用,和使用场景
readonly :只读,只生成getter方法,不生成setter方法
readwrite:可读可写,缺省属性
assign:弱引用,只能修饰c的基本数据类型(int,float,double,char,char *,结构体等),不能修饰对象
retain:强引用,只能修饰对象,ARC,MRC都可使用(一般使用strong代替)
weak:弱引用,只能修饰对象,不能修饰C的基本类型,ARC专用
strong:强引用,只能修饰对象,ARC专用
copy: 强引用 ,只能修饰不可变对象
nonatomic:原子操作,简单说nonatomic就是保证多线程安全
atomic:保证多线程安全

7.#include和#import的区别:效果是相同的,只是后者不会引起交叉编译,确保头文件只会被导入一次。

8.MRC下检测内存泄露的工具:Instruments工具

9.didReceiveMemoryWarning和viewDidUnload的作用

(1)didReceiveMemoryWarning:当内存不足的时候,系统回回调此方法提示你内存不足,在此方法内部,释放不一定要内存空间(CFImageRef)。
viewDidUnload:把视图控制器上所有的子视图一并移除。

(2)Xcode 5.0以后,苹果强制使用ARC; Xcode 4.0的时候,已经有ARC机制。

10.你会几种反向传值方法,它们的区别是?

注:关于这几种传值方法,在本人已发表的文章中已详述各种传值方法及使用方法,有需要的简友们可以点击下面标签去学习。

协议代理,通知中心.block.单例(不推荐)

区别:
(1)通知中心的特点是一对多,就是发送通知的是一个类,可以在很多类中接收这个通知。
(2)协议代理和block的特点就是一对一,发送者发送通知之后,只有一个类可以接收。
(3)耦合性高低排布:协议代理->block->通知中心
(4) 运行效率高低排布: block->协议代理->通知中心

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,036评论 29 470
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 1,982评论 0 12
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,318评论 0 35
  • 我叫陈亚林,今年32岁。来自(重庆涪陵)远嫁江西、龙虎山。现在拥有两个孩子的普通宝妈,记忆中的我不胖不...
    亚林的蜕变阅读 1,178评论 0 3
  • 明天大庆滴干活,今天附近小公园耍耍
    刺猬的白肚皮阅读 154评论 0 0