ARC下内存需要做的手动管理

来源:互联网 发布:数控车床g84攻牙编程 编辑:程序博客网 时间:2024/06/05 05:13

1.主要是你在iOS里使用    while (true) {} 无线循环时, iOS ARC默认认为你这个方法永远没有执行完,所以不会去主动释放你方法里的对象,这一点和JAVA不一样, 所以很多JAVA开发者转iOS后习惯性的使用while(true){} 导致项目里存在这种内存隐患,导致内存无限增加 

 ----01>添加@autorelesepool{

}

----02>使用nstime做无限循环,arc下会自动释放内存

2.ARC模式下oc对象与非oc对象之间的桥接  非oc对象需要手动释放。

__bridge:不涉及对象所有关系改变
__bridge_transfer:给予 ARC 所有权
__bridge_retained:解除 ARC 所有权
3.如果在WebView载入完成之前关闭画面的话,画面关闭后,ViewController也释放了。但由于WebView正在载入页面,而不会马上被释放,等到页面载入完毕后,回调delegate(ViewController)中的方法,由于此时ViewController已经被释放,所以会出错。(message sent to deallocated instance)
解决办法是在dealloc中把WebView的delegate释放。

4.ARC模式下,自动回收只针对Objective-C对象有效,对于使用create,copy,retain等生成的Core Foundation对象还是需要我们手动进行释放的,CFRelease()




0 0