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

本文深入探讨Objective-C中的类型概念,包括引用类型和值类型,详细解释类与结构的区别,并阐述栈与堆的内存管理方式。文章还涉及传参机制与运行时内存管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Objective-C的类型

 引用类型

        类 class

        指针 pointer

        块 block

 值类型

        基础数值类型

        结构 struct

        枚举 enum

 类型装饰 

        协议 protocol

        类别 category

        扩展 extension

 类 class 和 结构 struct

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

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

 

 栈(stack) VS 堆(heap)

 栈(stack):存储值类型

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

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

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

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

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

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

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

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

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

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

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

其他:

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

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

转载于:https://www.cnblogs.com/dom075/p/5300611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值