iOS笔试题(一)
1.readwrite,readonly,assign,retain,copy,nonatomic属性的作用?
读写(默认);只读;
对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等直接复制;
释放旧的对象再将旧的对象的值赋给新对象;
释放旧对象再讲传入对象的一份拷贝赋给新对象;
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作;
@dynamic是告诉编译器由我们自己来实现访问方法,@synthesize是setter和getter方法编译器就会帮你实现了。
2.OC的内存管理机制?
引用计数
MRC(Manual Reference Count),ARC(Auto Reference Count)
3.UIView与CALayer有什么区别?
1)UIView属于UIKit框架,CALayer属于QuartzCore框架;
2)CALayer 比UIView更加轻量级别, 但是可以实现同样的效果;
3)UIView可以处理用户的触摸事件,而CALayer不可以;
4)UIView中有个属性是layer;
5)UIView是视图界面的元素,而CALayer是绘制内容;
4.简述视图控制器的生命周期?
alloc:创建对象,分配空间
init (initWithNibName) :初始化对象,初始化数据
loadView:从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
viewDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
5.ios的系统架构层次?
核心系统层(Core OS Layer):提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。
操作系统内核服务(BSD sockets、I/O访问、内存申请、文件系统、数学计算等)
本地认证(指纹识别验证等)
安全(提供管理证书、公钥、密钥等的接口)
加速 (执行数学、大数字以及DSP运算,这些接口iOS设备硬件相匹配)
核心服务层(Core Services Layer):为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架:
CFNetwork(网络访问)
Core Data(数据存储)
Core Location(定位功能)
Core Motion(重力加速度,陀螺仪)
Foundation(基础功能如NSString)
Webkit(浏览器引擎)
JavaScript(JavaScript引擎)
媒体层(Media Layer):主要提供图像引擎、音频引擎、视频引擎框架。
图像引擎(Core Graphics、Core Image、Core Animation、OpenGL ES)
音频引擎 (Core Audio、 AV Foundation、OpenAL)
视频引擎(AV Foundation、Core Media)
可触摸层(Cocoa Touch Layer):主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架:
UIKit(界面相关)
EventKit(日历事件提醒等)
Notification Center(通知中心)
MapKit(地图显示)
Address Book(联系人)
iAd(广告)
Message UI(邮件与SMS显示)
PushKit(iOS8新push机制)
6.常见的多线程方法?
NSThread,GCD,NSOperation
7.#import和#include的区别 ?@class的作用?
#import完整的包含某个文件的内容,不会引发交叉编译,
#include是C/C++中导入头文件的关键字,完整的包含某个文件的内容,
@class仅仅是声明一个类名,可解决循环包含的问题。
8.id声明的对象有什么特征?
id类型的对象可以是任意类型的OC对象,与C中的void*万能指针相似。
具有运行时的特点,在程序运行时才确定对象的类型。
10.一个objc对象的isa的指针指向什么?有什么作用?
11.runtime如何通过select找到相应的IMP地址?
12.为什么UIScrollerView的滚动会导致NSTimer失效?
13.对于语句NSString *obj =[[NSData alloc] init]; objc在编译时和运行时分别是什么类型的对象?
编译时:NSString;运行时:NSData。
14.写一个Setter方法分别对应retain和copy。
15.OC的类可以多重继承么?可以实现多个接口么?
Category是什么?重写一个类的方式用继承好还是用分类好?为什么?
不可多继承;