黑马程序员:ios面试宝典之oc语言

黑马程序员:ios面试宝典之oc语言

ID:8964278

大小:24.38 KB

页数:13页

时间:2018-04-13

黑马程序员:ios面试宝典之oc语言_第1页
黑马程序员:ios面试宝典之oc语言_第2页
黑马程序员:ios面试宝典之oc语言_第3页
黑马程序员:ios面试宝典之oc语言_第4页
黑马程序员:ios面试宝典之oc语言_第5页
资源描述:

《黑马程序员:ios面试宝典之oc语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、OC语言(★★)有人可能会问对于我们学iOS的同学来讲,面试还会问Objective-C基础吗?答案是会的,但是不会太多,因此我给了两颗星的重要程度。一般笔试的时候出现Objective-C基础题的概率比较大,口头面试的时候比较少,比如自己在面试的时候一些对基础知识比较看重的面试官会深究着Objective-C基础去问,比如Objective-C内存管理等等。一、Objective-C语法1.面向对象都有哪些特性以及你对这些特性的理解继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一

2、定的延续性,同时继承也是封装程序中可变因素的重要手段。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释

3、为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1.方法重写(子类继承父类并重写父类中已有的或抽象的方法);2.对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些

4、行为的细节是什么。2.我们说的Objective-C是动态运行时语言是什么意思?(Whenwecallobjectivecisruntimelanguagewhatdoesitmean?)主要是将数据类型的确定由编译时,推迟到了运行时。这个问题其实浅涉及到两个概念,运行时和多态。简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。多态:不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类(life)都用有一个相同的方法-eat;那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。也

5、就是不同的对象以自己的方式响应了相同的消息(响应了eat这个选择器)。因此也可以说,运行时机制是多态的基础.3.readwrite,readonly,assign,retain,copy,nonatomic,strong,weak属性的作用?并区别strong(强引用)、weak(弱引用)?什么情况使用copy,assign和retain?readwrite是可读可写特性;需要生成getter方法和setter方法时;readonly是只读特性只会生成getter方法不会生成setter方法,不希望属性在类外改变;assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变

6、量时;,assign用于简单数据类型,如NSInteger,double,bool;retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;copy表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时;nonatomic非原子操作,决定编译器生成的settergetter是否是原子操作;atomic表示多线程安全,一般使用nonatomic。retain和copy用户对象,copy用于当a指向一个对象,b也想指向同样的对象的时候,如果用assign,a如果释放,再调用b会crash,如果用copy的方式,a和b各自有

7、自己的内存,就可以解决这个问题。retain会使计数器加1,也可以解决assign的问题。另外:atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。其实从这个也可以引申到内存管理的一系列问题.面试官会让你讲讲MRC和ARC的理解,随即也引申出Block的内存机制,为啥推荐Block用copy,Block会存在哪些内存问题?循环引用?

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。