Objective-C的类型
引用类型
类 class
指针 pointer
块 block
值类型
基础数值类型
结构 struct
枚举 enum
类型装饰
协议 protocol
类别 category
扩展 extension
类 class 和 结构 struct
类: 引用类型(位于栈上面的指针(引用)和位于堆上的实体对象)
结构:值类型(实例直接位于栈中)
栈(stack) VS 堆(heap)
栈(stack):存储值类型
·无ARC负担,由系统自动管理,以执行函数为单位。
·空间大小是编译时确定(参数+局部变量)。
·函数执行时,系统会自动分配,结束时立即回收。
·函数之间通过拷贝值传递。
·具有局部性,大小有限额,超出会栈溢出(stack overflow)一般情况下不会,除非死循环和超大递归。
堆(heap):存储引用类型对象
·分配由程序员手动请求(创建对象时)
·释放由运行时ARC机制自动释放(确定时)
·函数之间通过拷贝引用(指针)传递
·具有全局性,总体大小无限制(受制于系统内存整体大小)
·堆是最*也是最容易出问题的,比如内存泄漏。
其他:
传参:传参其实就是栈与栈之间的拷贝
要注意运行时内存图--”胸中有沟壑”