ios 面试总结

1、OC:面向对象的语言

特性:封装、继承、多态

动态特性:如id,运行时再决定对象的类型

动态绑定:对象实例化后,类型才被确定,对象的属性和相应消息也被确定

动态加载:根据需求加载所需的资源,如不同机型的适配,@2X 和 @3X

2、静态类型 和  动态类型

静态类:固定性、可预知性  -------强类型

动态类型:------弱类型

3、【重点】内存管理

retain引用计数加1、release释放资源、autorelease自动释放对象资源

autorelease内部是成对的retain()和release()

本质:引用计数

遵循的原则: “谁创建、谁释放、谁引用、谁管理”

MRC(手动内存管理): 创建或引用的时候,需要发从alloc、copy、retain消息,需要释放的时候发送release, 当引用计数为0时,系统释放对象

ARC(自动内存管理):iOS5.0后----自动引用计数,不需要再调用retain、release、autorelease

strong修饰的指针变量指向对象:当指针指向新值、或指针不存在时,相关联的对象就会释放

weak修饰的指针变量指向对象:当指针指向新值、或指针不存在时,指针对自动设置为nil

【注意】

向一个对象发送autorelease:对象不会立即销毁,而是放入自动释放池,待池子释放时,会向池中每个对象发送一条release,以此来释放对象。

向一个对象发送release消息:并不意味着对象被销毁,而是当引用计数为0时,系统才会调用dealloc方法释放对象本身和拥有的实例

4、ARC与MRC混编

在targets中 的   Build Phases---->Compile Sources

(1)ARC项目中有MRC的程序,在对应的.m中添加-fno-objc-arc标记,表明在编译时,该文件使用MRC编译

(2) MRC项目中添加ARC的文件,可以使用 -fobjc-arc 标记即可

5、

猜你喜欢

转载自blog.csdn.net/qq_33656996/article/details/81771668
今日推荐