1 / 104
文档名称:

iOS面试必看.docx

格式:docx   大小:993KB   页数:104页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

iOS面试必看.docx

上传人:s0012230 2017/8/16 文件大小:993 KB

下载得到文件列表

iOS面试必看.docx

相关文档

文档介绍

文档介绍:iOS 面试必看
OC 的理解与特性
oc 作为一门面向对象的语言,自然具有面向对象的特性:封装,继承,多态,它即具有静态语言(如 C++ )的特性,又有动态语言的效率(动态绑定,动态加载)总体来书 oc 是一门不错的编程语言
oc 具有非常多的动态特性,主要表现为三个方面:动态类型,动态绑定,动态加载,动态----必须到运行时才会做的一些事情.
动态类型:即运行时再决定对象的类型,这种动态特性在日常开发中非常常见,简单来说就是 id 类型,事实上,由于静态类型的固定性和可预知性,从而使用的更加广泛,静态类型是强类型,而动态类型是弱类型,运行时决定接受者
动态绑定:基于动态类型,在某个实例对象被确定后,其类型便被确定了,该对象对应的属性和响应消息也被完全确定
动态加载:根据需求加载所需要的资源,最基本的就是不同机型的适配,例如,在 retina 设备上记载***@2x 的图片,而在老一些的普通设备上加载原图,让程序运行时添加代码块以及其他资源,用户可以根据需要加载一些可执行代码和资源,而不是在程序启动时就加载所有组件,可执行代码可以含有和程序运行时整合的新类
简述内存管理的基本原则:
之前: oc 内存管理遵循,谁创建,谁释放,谁引用,谁管理的机制,当创建一个对象的时候,需要向他发送 alloc,new,copy,retain 消息,当释放该对象时需要发送 release 消息,当对象的引用计数为0 时,系统将释
放该对象,这是 oc 的手动管理机制
目前: 之后引用自动管理机制—自动引用计数 ARC 管理机制与手动管理一样,只是不再需要调用 retain,release,autorelease: 它的编译时特性,当你使用 ARC 时,在适当位置插入 release 和 autorelease,它引用 strong 和 weak 关键字, strong 修饰的指针变量指向对象时,当指针指向新值或者指针不复存在时,相关的对象就会自动释放,二 weak 修饰的指针变量指向对象,当对象的拥有者指向新值或者不存在时weak 修饰的指针会自动置为 nil
如果使用 alloc,copy, 或者 retain 一个对象时你就有义务向他发送一条 release 或者 autorelease 消息,其他方法创建对象是不需要你管理
向一个对象发送 autorelease 消息,这个对象不会立即被销毁,而是将这个对象加入自动释放池,待池子释放时,他会向池中每一个对象发送一条 release 消息,以此来释放对象
向一个对象发送 release 消息,并不意味着这个对象被销毁,而是当这个对象的引用计数为0 时,系统才会调用 dealloc 方法,释放该对象和对象本身所拥有的实例
其他注意事项:如果一个对象有一个__ strong 类型的指针指向着,这个对象就不会被释放,如果一个指针指向超出了他的作用域,就会被指向 nil, 如果一个指针被指向 nil 那么他原来指向的对象就被释放了,当一个视图控制器被释放时,它内部的全局指针会被指向 nil 用法:不管全局变量局部变量用__ strong 描述就行
局部变量:除了作用域指针就会被置为 nil, 方法内部创建对象,外部使用需要添加_autorelease, 连线的时候,用_ weak 描述
代理使用__unsafe_unretained 就相当于 assign
block 中为了避免循环引用为题,使用__ weak 描述;
声明属性时,不要以 new 开头,如果非要以 new 开头命名属性的名字需要自己定制 get方法名,如@ property(getter = theString)NSString*newString
如果使用自动释放池,用@ autoreleasepol{}
ARC自能管理 Foundation 框架的变量,如果程序中把 Foundation 中的变量强制转换成 CoreFoundation 中的变量需要交换管理权
在非ARC工程中采用 ARC去编译某些类:- fobjc-arc
在 ARC 工程中采用非 ARC去编译某些类:- fon-objc-arc
如何理解 mvc 模式:
MVC 是一种架构模式,M表示 Model,V 表示视图 View,C 表示控制器 Controller
Model 负责存储,定义,操作数据
View 用来展示数据给用户,和用户进行操作交互
Controller 是 Model 和 View 的协调者, Controller 他 Model 中的数据拿过来给 View 用, Controller 可以直接与 Model 和 View 进行通信,而 View 不能和 Controller 直