iOS(OC、swift) 结构体和类的区别

本文探讨了iOS开发中Objective-C(OC)和Swift中结构体与类的异同点。OC中,结构体仅封装数据,而类可封装数据和行为;赋值时结构体为拷贝,类为地址。结构体常分配在栈,访问效率高,适用于属性较少的情况。相反,类分配在堆,适用于有复杂行为和多个引用的场景。Swift中,结构体和类有诸多共同点,如定义属性和函数,但类支持继承、运行时类型检查、析构函数和引用计数等特性,结构体则不具备。

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

OC:

相同点:都可以将多个数据封装为一个整体。
这里写图片描述
不同点:
1. 结构体只能封装数据,而类还可以封装行为。
2. 赋值 :结构体是(拷贝),对象之间是(地址)
3. 结构体变量分配在栈空间(如果是一个局部变量的情况下),而对象分配在堆空间

栈空间特点:空间相对较小,但是存储在栈中的数据访问的效率稍高一点
堆空间特点:空间相对较大,但是存储在堆中的数据,效率低一些
这里写图片描述

应用场景:
1. 如果封装的这个数据,不仅有数据还有方法,只能使用类。
2. 如果表示实体,没有行为,光有属性:

如果属性较少,只有几个的情况下,就定义为结构体,分配在栈,提高运行效率。
如果属性较多,就不要定义为结构体,因为这样结构体变量会在栈中占据很大一块空间,范围影响效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值