iOS内存管理

一、五大内存区域 & 自由存储区

1 栈

变量存储区(局部变量,函数参数等)

创建时编译器自动分配,不需要时自动清除

2 堆

由new alloc 创建的对象

释放:new <-> release,引用计数为0时系统销毁对象, ARC自动释放,MRC手动释放

3 全局/静态存储区

全局变量 静态变量

4 常量存储区

常量

5 代码区

函数的二进制代码

6 自由存储区

由mallo等分配的内存块。

free结束生命。

二、变量

1 static静态变量

1.1 全局

  • 优点:对象方法和类方法均可访问和修改,外部类无法调用,定义后只会只想固定的指针地址,供所有对象使用,节省空间
  • 缺点:存在的生命周期长,从定义直到程序结束

1.2 局部

只能在给局部代码块中使用。

与全局仅作用域不同。

2 extern全局变量

2.1 对内

.h中没有extern修饰,和全局静态变量一样

2.2 外部

  • 优点:除了该类,其他文件也可以访问
  • 缺点:存在的生命周期长,从定义直到程序结束,并且外部可以修改,出现错误不易定位
  • note:使用全局变量的原因就在于其对外的特性,但是其使用的方便性没有使用model的属性或宏来得方便。程序启动的时候会单独加载全局变量,同理与全局静态变量,少使用。
全局静态变量与全局变量其实本质上是没有区别的,只是存在修饰区别,一个static让其只能内部使用,一个extern让其可以外部使用

三、const常量

  • 优点:只可以读取不可以修改
  • 缺点:存在的生命周期长

四、属性标识符

1. @synthesize

编译时自动生成getter/setter,手动生成不报错

2. @dynamic

用户自己生成getter/setter,若没有手动生成不报错,但是运行时调用会崩溃。(OC具有动态绑定特性,运行时才确认具体调用方法)

3. @property

(未完待续)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值