Object-C内存管理中的黄金法则
在Object-C中,内存的管理是通过retain和release来对对象的计数器进行加1或者减1来进行管理,当使用一个对象
的时候需要进行对对象的计数器加1,使用完成后要减1进行释放,当计数器等于0的时候对象进行销毁。内存管理的黄
金法则就是,当你对一个对象使用retain的时候,一定要进行relase释放。下面我们使用一个例子来说明这个问题,这个
例子是讲遛狗原理,一个人遛狗的时候需要讲自己的绳子套在狗的脖子上面,其他人想遛狗的时候也得把绳子套到狗的
脖子上面,然后如果不想遛狗了就需要把自己的绳子从狗的身上拿掉,也就是减1,当没有人遛狗的时候,这个狗就进
行销毁。
首先看狗这个类
#import <Foundation/Foundation.h>#import "Dog.h"#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { Dog *dog1 = [[Dog alloc] init]; [dog1 setID:1]; Person *xiaoLi = [[Person alloc] init]; //小丽要遛狗 [ xiaoLi setDog:dog1]; Person *xiaoWang = [[Person alloc] init]; //小王要遛狗 [xiaoWang setDog:dog1]; NSLog(@"dog1 retainCount is %ld",[dog1 retainCount]); [dog1 release]; NSLog(@"dog1 retainCount is %ld",[dog1 retainCount]); [xiaoWang release]; NSLog(@"dog1 retainCount is %ld",[dog1 retainCount]); [xiaoLi release]; } return 0;}
想象才能下笔,否则的话很容易出现内存泄露这种事情的发生。