永发信息网

Swift中结构体和类的区别

答案:2  悬赏:0  手机版
解决时间 2021-03-20 03:37
Swift中结构体和类的区别
最佳答案
两者之间的关系
定义:结构体有0个或多个相同或者不同的数据组合而成的数据集合,其中那些数据或者方法被称为结构体的成员或者是成员方法。
格式:
struct name:<:protocal>
{
var 成员1:数据类型
var 成员2:数据类型
….
}
要注意的地方:
结构体是值类型,其 实例将会被赋予变量或者常量和被函数调用时被复制
结构体中的成员可以包括属性、类型别名、数组、其他结构体和枚举声明
结构体声明不能包含析构器或者协议声明,但是可以包括任意协议的实现,不能继承类、枚举、其他结构体
两者间的区别
在我们实际的开发中,可能会纠结于应该是使用类还是结构体,在这里我也总结了一下类与结构体间的一些区别。
结构体:
///MARK: - 结构体
struct Car
{
var name: String!
init(name: String){
self.name = name
}
}
var p1 = Car(name: "bench")
var p2 = p1
p2.name = "BMW"
print(p2.name,p1.name)
/// 打印结果为BMW,bench
类:
///MARK: - 类
class Car
{
var name: String!
init(name: String){
self.name = name
}
}
var p1 = Car(name: "bench")
var p2 = p1
p2.name = "BMW"
print(p1.name,p2.name,p1.name)
/// 打印结果为BMW,BMW,BMW
从上面的结果可以看出来,再次给对象赋值,结构体不会改变,而类则会改变原来的值,所以说明类的对象是引用类型,而结构体是值类型。
还有的区别就是类是属于面向对象编程,结构体属于面向协议的编程,所谓面向协议编程其实就是面向对象的升级。在swift中推荐使用的是使用结构体,类在swift中不处于主流的地位,还有就是结构体也能够实现类的全部功能,结构体更模块化,默认实现初始化方法并且不用考虑ARC。
结构体只需要给出变量的类型,不用给出初始值
struct car {
var name: String
}
类则需要给出初始值
class car {
var name: String
init(name:String) {
self.name = name
}
}
上面两种的效果一样。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
武昌区八铺街马子湖大概有几年拆迁
什么而下4字成语
LonginesL4.785.8.73.2怎么样
恒泰亨通投资公司这个地址在什么地方,我要处
S号的外套一般适合一米几的人穿
有谁代理过小春‖号氧元素,感觉怎么样?
数学题3( )3( )3( )3=3、4、5、6、7 填加减乘
为什么在农业银行存定期的钱,在扣费时叫保险
p是正方形ABCD内一点,在ABCD外有一点E,角ABE
跪求刻痕1音乐ishtar以及。。。
情人节送项链代表什么
武爹臭豆腐地址在什么地方,想过去办事
写出四大名著中两匹马的名字及主要事迹
男性,左乳下5厘米 按压肋骨不疼里面疼
智能手机中毒怎么办
推荐资讯
五菱之光倒车的时候刹车抱死
砌一砖墙,高2.1M,长150M,水泥砂浆砌筑,工
英国卫裤正品应该是多少颗磁石为合适,多了或
碟中谍1剧情
黄历上写的鼠日冲马马是什么意思啊?
我想问下三清山附近哪里能买到火车票?还有三
深圳缴的住房公积金 可以在惠州买房子吗
看图猜成语一匹马和往这边走答案是什么
江油到阆中经过那里
无线遥控跳蛋多少钱一个
哪些实验需要用动物来做?
香蔓丽儿形象店我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?