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的系统架构层次?


iOS笔试题(一)_第1张图片

核心系统层(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是什么?重写一个类的方式用继承好还是用分类好?为什么?

不可多继承;

你可能感兴趣的:(iOS笔试题(一))