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、