一、OC内存管理

2018-11-01  本文已影响0人  崔章强

1、内存中的五大区域

我们通常所说的内存管理指的是管理堆中的内存

2、引用计数器

每一个OC对象都有一个属性,叫做retainCount,翻译过来也就是引用计数器,类型为unsigned long,占据8个字节,每一个对象负责维护对象所引用的记数值,当一个新的引用指向对象,那么这个对象的引用值增加1,当我们新创建出一个对象的时候这个对象的引用计数器的值默认为1,当这个对象被少一次引用的时候那么就先让这个对象的引用记数值减1,当这个对象所引用的记数值为0的时候,代表这个对象没有被使用,这时系统会自动回收掉此对象,回收这个对象的同时自动调用这个对象的dealloc方法。

NSObject *object = [[NSObject alloc] init];//引用计数为1

self.property = object;//引用计数为2

[object release];//引用计数为1

3、assign weak retain strong copy关键字的区别

block属性为什么需要用copy来修饰?

因为在MRC下,block在创建的时候,它的内存是分配在栈(stack)上的,而不是在堆(heap)上,可能被随时回收。他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。通过copy可以把block拷贝(copy)到堆,保证block的声明域外使用。在ARC下写不写都行,编译器会自动对block进行copy操作。

__block与__weak的区别

上一篇下一篇

猜你喜欢

热点阅读