objective-C 中的内存管理

1. 手动管理。下面这篇博文绝对能让你清晰不少。http://www.cocoachina.com/bbs/read.php?tid=15963 php

不过这里须要指出两点: html

1.1 文中说你autorelease的对象会被放到一个nsmutablearray中,这个未必,总之,知道是放在了某个容器中就ok了,不必较真 程序员

1.2 文中说到的一些在viewDidUnload中的操做,如今应该移植到didReceiveMemoryWarning中,字iOS6之后就没有viewDidUnload操做了,该释放的对象不能忽视。 iphone

1.3 autorelease能少用,尽可能少用。 网站

2. ARC (固然我是比较推荐使用arc的,尤为是对内存的管理没有太多自信的时候)毕竟它能够节约开发时间,让程序员们吧主要经历放在开发主要代码上。 spa

arc使用的一些规则: .net

2.1 不能直接调用dealloc方法,不能重载或直接调用retain, release, retainCount, 或 autorelease等方法 指针

2.2 在c语言的结构体中,不能再使用对象指针。应放弃c结构体,而使用oc对象。 htm

2.3 不能使用NSZone 对象

2.4 不能使用NSAutoreleasePool,ARC提供了@autoreleasepool语句块

2.5 方法和变量的命名不能以“new”开头

关于对象的生命周期

  • weak引用:设置成weak的属性,不会影响对象的生命周期,若是引用的对象已经被释放,引用会指向nil。

  • strong引用:设置成strong的属性,会影响对象的生命周期。

关于arc我这里也提供几个很好的网站链接

iOS ARC机制 weak strong

 ARC,IBOutlets 应该定义strong仍是weak

什么是ARC

相关文章
相关标签/搜索