今天学习block的时候,看到了一些关于内存的东西,其中就有关于堆和栈的,简单说一下自己的理解,当然不算深入。
堆:主要用来存储OC对象,堆内存是需要我们自己来收回的。
栈:栈是用来存储非OC对象的,比方说一些基本数据类型,栈内存是系统自己来回收的。
举个例子:
int a = 10;(存储在栈之中)
你有一个类,命名为FirstView,
FirstView *firstView = [[FirstView alloc] init];(firstView就是存储在堆之中)
这个firstView所占的内存就是需要我们自己来回收的。
还有一个区别就是:
堆是动态分配内存的,而栈包含动态分配内存和静态分配内存。
送一个小福利:怎么区分OC对象和非OC对象
OC对象在创建的时候都是带*的,比方说:NSString *str,这个就是OC对象
非OC对象就是不带*的,例如:int a = 10,这就是非OC对象。
(后期持续更新)
网友评论