OC中内存管理机制

一、内存管理:

1.内存回收:dealloc只是把内存使用权释放,内容不清除,可能出现野指针的情况
2.memSet:将内存初始化,即把内存的内容清楚
3.ui进行交互的时候,系统会在交互过程中自动加一个自动释放池,所以有时候滑动tableView时程序会崩溃,要用属性赋值
4.在子线程中系统不会自动添加自动释放池,如果子线程中用了很多类方法,我们需要自己手动添加自动释放池
5.dealloc中不需要对assign修饰的属性进行释放
6.给一个可变的字符串用copy拷贝一份时,拷贝的字符串就是不可变的字符串了,并且是深拷贝;
7.给一个不可变的字符串用mutableCopy拷贝一份副本时,拷贝的字符串是可变的,并且是深拷贝;
8.要进行拷贝的类必须遵循NSCopying协议,并且重写copyWithZone这个方法,是深拷贝还是浅拷贝与方法无关,只与方法的实现内容有关;

二、集合的内存管理 :深拷贝,浅拷贝,真正的深拷贝(归档)

1.当一个可变的集合,使用mutableCopy时都会产生一个新的对象,但集合的元素是一个浅拷贝;
2.真正的深拷贝:即集合中的元素和集合都发生深拷贝,则要使用归档;
3.代理中如果是单一持有时,代理对象用assignretain一样;在UITableView的代理中设置assign,防止产生循环引用的情况;
4.autoreleasepoolrunloop的一种管理方式,先接收到release消息的对象后释放,像栈的管理形式;
5.iPhone的每个应用的内存最高为120M

你可能感兴趣的:(OC中内存管理机制)