iOS面试题IosiOS学习笔记

iOS笔试题部分答案(8月更新中...)

2016-08-30  本文已影响274人  郝嗨森

2016.8.10
1.答:(1)因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本.
(2)如果我们使用是 strong ,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性.

2.答:@synthesize 的语义是如果你没有手动实现 setter 方法和 getter 方法,那么编译器会自动为你加上这两个方法。
@dynamic 告诉编译器:属性的 setter 与 getter 方法由用户自己实现,不自动生成。

3.答:在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用

4.沙盒默认情况下有三个目录文件夹documents,Library,tmp及应用的App文件

5.(1)load 类方法
调用时机比较早,运行环境有不确定因素。具体说来,在iOS上通常就是App启动时进行加载,但当load调用的时候,并不能保证所有类都加载完成且可用,必要时还要自己负责做auto release处理。对于有依赖关系的两个库中,被依赖的类的load会优先调用。但在一个库之内,调用顺序是不确定的。
对于一个类而言,没有load方法实现就不会调用,不会考虑对NSObject的继承。
一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前。
Category的load也会收到调用,但顺序上在主类的load调用之后,
不会直接触发initialize的调用。
(2)initialize的自然调用是在 第一次主动使用 当前类 的时候。
在initialize方法收到调用时,运行环境基本健全。
initialize的运行过程中是能保证线程安全的。
和load不同,即使子类不实现initialize方法,会把父类的实现继承过来调用一遍。注意的是在此之前,父类的方法已经被执行过一次了,同样不需要super调用。
由于initialize的这些特点,使得其应用比load要略微广泛一些。可用来做一些初始化工作,或者单例模式的一种实现方案。

2016.8.11
1.略

2.在textview初始化时,创建一个label添加在它上面,然后在label中添加占位内容,当textview中输入内容的时候,把label的内容清空,如果textview内容清空了,再把label的内容添加上.

3.(1)autoLayout (2)size class (3)masonry (4)按比例用代码适配

4.推送相关:极光推送
聊天相关:环信
UI相关:侧栏相关,美团菜单,网易新闻菜单等
网络加载:AFNetworking

2016.8.18
1.(1)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

上一篇 下一篇

猜你喜欢

热点阅读