3.MRC是什么?管理原则是什么?存在的问题?
MRC,全称MannulReference Counting,手动内存管理 (手动引用计数),需要程序员手动的创建对象申请内存,然后再手动的释放。
MRC管理内存的原则:谁创建,谁释放。
也就是说,在使用的过程中,谁retain,谁release;或者谁alloc,谁release。
在使用MRC时,当引用计数为0时,必须回收,引用计数不为0,则不回收;如果内存计数为0了,没回收,会造成内存泄露。 如果想使用已经创建好的某个对象(别人创建的),不能直接拿过去用,需要先retain(让计数+1),用完之后应该release(计数-1),否则会造成野指针。
PS:野指针(不知道指向哪里的指针),它指向了一块不属于它的内存,可能是别人的内存,也可能之前是自己的,但是被别人释放了。
避免野指针的方式就是释放之后,让指针等于nil,这个时候在重复释放,则不会提示错误。
nil:又名空,是操作系统持有的内存,任何人都夺不去的内存。