objective-C学习笔记(二)类 class 和 结构 struct

Objective-C的类型

 引用类型

        类 class

        指针 pointer

        块 block

 值类型

        基础数值类型

        结构 struct

        枚举 enum

 类型装饰 

        协议 protocol

        类别 category

        扩展 extension

 类 class 和 结构 struct

 类: 引用类型(位于栈上面的指针(引用)和位于堆上的实体对象)

 结构:值类型(实例直接位于栈中)

 

 栈(stack) VS 堆(heap)

 栈(stack):存储值类型

   ·无ARC负担,由系统自动管理,以执行函数为单位。

   ·空间大小是编译时确定(参数+局部变量)。

   ·函数执行时,系统会自动分配,结束时立即回收。

   ·函数之间通过拷贝值传递。

   ·具有局部性,大小有限额,超出会栈溢出(stack overflow)一般情况下不会,除非死循环和超大递归。

 堆(heap):存储引用类型对象

   ·分配由程序员手动请求(创建对象时)

   ·释放由运行时ARC机制自动释放(确定时)

   ·函数之间通过拷贝引用(指针)传递

   ·具有全局性,总体大小无限制(受制于系统内存整体大小)

   ·堆是最自由也是最容易出问题的,比如内存泄漏。  

其他:

传参:传参其实就是栈与栈之间的拷贝 

要注意运行时内存图--”胸中有沟壑”

posted @ 2016-03-21 16:45  dom075  阅读(197)  评论(0)    收藏  举报