objective-C 中的内存管理

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

不过这里需要指出两点:

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

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

1.3 autorelease能少用,尽量少用。

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

arc使用的一些规则:

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

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

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

你可能感兴趣的:(objective-C 中的内存管理)