首页 > 代码库 > 关于oc中自动引用计数 小结
关于oc中自动引用计数 小结
1、自动引用计数
ARC(Automatic Reference Counting,自动引用计数)极大地减少了Cocoa开发中的常见编程错误:retain
跟release
不匹配。ARC并不会消除对retain
和release
的调用,而是把这项原本大都属于开发者的工作移交给了编译器。这样做的好处是显而易见的,但是必须知道retain
和release
是仍然在使用的。ARC并不等同垃圾回收。(有利于程序员操作)
2、 手动引用计数和自动引用计数区别
在手动计数中可以使用retain和release但在自动引用计数中是不可以手动调用retain和release的 ,手动中需要程序员自己释放(某个文件创建就在某个文件释放),自动引用中程序会在哪里创建就会在哪里释放(注意作用域)。
3、使用自动引用计数增加和递减关键字
1、malloc(retain+1)
colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值.
2、realloc(retain+1)
3、calloc(retain+1)
4、alloc创建对象(retain+1)
5、presentViewController 与dismissViewControlerAnimated (配对使用 前者加1后者减1)
4、实例
__strong Student *student = [[Student alloc] init];
强指针指向一个Student对象 有alloc自动retain+1
当没有指针指向对象时 自动释放
student4 = student; //student4指向student NSLog(@"+++++++"); // student4=nil; student = nil; NSLog(@"--------");
把student4指向student 然后把student =nil它不会被释放 因为还有student4指向它所以不释放;去掉第一句 student =nil释放;