1、内存管理原因:
(1)内存溢出 内存不够用
(2)野指针异常 指针操作了不属于自己的存储空间,指针操作已经销毁的对象
2、内存管理的方式
(1)垃圾回收 OC支持,mac开发支持,iOS开发不支持
(2)MRC iOS开发 手动操作引用计数,手动调用控制引用计数的方法
(3)ARC iOS开发 自动操作引用计数,编译器调用引用计数的方法
3、内存管理的机制
(1)引用计数 标记程序运行期间,对象被引用的次数
(2)通过操作引用计数,控制对象是否被销毁。
(3)当引用计数应该减为0时,对象自动被销毁,存储空间被回收
4、操作引用计数的方法
(1)造成引用计数增加
alloc 当前对象 0 -> 1
retain 当前对象 加1
copy 原来的对象 不变 新的对象 0 -> 1
(2)造成引用计数减少
release 当前对象 立即减1
autorelease 当前对象 延迟减1 非立即
5、销毁对象
dealloc 引用计数将要减为0时,对象自动调用
(1)继承自NSObject,可以不实现,编译器默认实现
(2)如果实现dealloc方法
{
代码
[super dealloc];
}```