Pre:
(1) 引用计数介绍
ObjC中内存的管理是依赖对象引用计数器来进行的:在ObjC中每个对象内部都有一个与之对应的整数(retainCount),叫“引用计数器”,当一个对象在创建之后它的引用计数器为1,当调用这个对象的alloc、retain、new、copy方法之后引用计数器自动在原来的基础上加1(ObjC中调用一个对象的方法就是给这个对象发送一个消息),当调用这个对象的release方法之后它的引用计数器减1,如果一个对象的引用计数器为0,则系统会自动调用这个对象的dealloc方法来销毁这个对象。
(2) 如果整个项目都想使用MRC
在Xcode中关闭ARC:项目属性—Build Settings--搜索“garbage”找到Objective-C Automatic Reference Counting设置为No即可。
(3) ARC中想用MRC 和 MRC中想用ARC
在ARC工程中使用MRC的类。方法如下:
在targets的build phases选项下Compile Sources下选择要不使用arc编译的文件,双击它,输入 -fno-objc-arc 即可
MRC工程中也可以使用ARC的类。方法如下:
在targets的build phases选项下Compile Sources下选择要使用arc编译的文件,双击它,输入 -fobjc-arc 即可
(4)在MRC里边应该注意属性的参数
属性参数strong、retain和copy以及assign默认实现的setter方法是不一样的,这在demo中test3、4、5中会展示一下
(5)自定义对象的copy
在demo里实现了对car这个自定义对象的copy,遵守协议,实现协议方法,有兴趣的可以看一下