网易首页 > 网易号 > 正文 申请入驻

复制Swift类实例,为何原对象也跟着变?

0
分享至

你创建一个 Swift 类,复制一份,修改副本里的某个值——然后发现原对象也变了。第一次遇到这个现象时,多数人都会愣一下:这叫复制?

别急,这还真不是 Bug。Class 在 Swift 里的行为就是如此,而且这种设计是刻意为之。


我们来建一个最简单的忍者角色类:

class Ninja {var name: Stringvar powerLevel: Intinit(name: String, powerLevel: Int) {self.name = nameself.powerLevel = powerLevel

然后生成一个鸣人实例,再把它“拷贝”给第二个变量:

var naruto = Ninja(name: "Naruto", powerLevel: 9000)var naruto2 = naruto

现在只改 naruto2 的名字,换成佐助:

naruto2.name = "Sasuke"print(naruto.name)  // 输出 "Sasuke"print(naruto2.name) // 输出 "Sasuke"

明明只动了 naruto2,naruto 的名字也跟着变了。这就是 Class 和 Struct 最核心的区别。

Struct 复制时,数据直接保存在变量里,拷贝一份就像影印一份档——两张纸完全独立,改哪一张都不影响另一张。
但 Class 不一样。变量里存的并不是数据本身,而是一个指向内存堆中数据的“路标”。当你把 naruto 赋值给 naruto2,复制的只是这个路标,数据还是同一份。于是两个变量像两个路牌,同时指向同一个地址。

所以当你跟着 naruto2 的路标改掉 name,naruto 的路标指向的也是这同一块数据,自然就跟着改了。数据只有一份,两根指针只是不同的入口。

这并非设计上的疏漏。假设你正在写一款 iOS 应用,用户头像昵称同时出现在设置页、首页和通知栏三个地方。要是它们各自存一份独立拷贝,用户改一次昵称,你就得连追三个页面的数据去更新,漏掉任何一个都会出现不一致。
但用 Class,三个页面各拿着自己那根路标,指向的却是同一个用户数据。昵称改一次,所有页面自动刷新——这种引用特性,正是处理共享状态时最想要的效果。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
谢贤去世前张柏芝火速安排大儿子提前返港陪伴爷爷,谢贤曾多次公开称赞张柏芝“把孩子教得很好”

谢贤去世前张柏芝火速安排大儿子提前返港陪伴爷爷,谢贤曾多次公开称赞张柏芝“把孩子教得很好”

扬子晚报
2026-07-21 18:01:02
普京喉舌喊话“人人保卫祖国”,女性和老人被提及上战场引争议

普京喉舌喊话“人人保卫祖国”,女性和老人被提及上战场引争议

桂系007
2026-07-21 18:42:59
28岁上海女健身教练确诊艾滋病,痛苦坦言:早有异常,当时没重视

28岁上海女健身教练确诊艾滋病,痛苦坦言:早有异常,当时没重视

杜医生聊健康
2026-07-13 18:58:31
昔日首富牟其中服刑十八年,出狱无亲人相伴,唯有小姨子长久守候

昔日首富牟其中服刑十八年,出狱无亲人相伴,唯有小姨子长久守候

磊子讲史
2026-07-06 18:10:46
人到74岁,身体会长寿的8个信号,看看你有没有

人到74岁,身体会长寿的8个信号,看看你有没有

牛锅巴小钒
2026-07-22 17:57:47
比越南还要白眼狼!中国决定撤离援助后,该国家居然立即翻脸

比越南还要白眼狼!中国决定撤离援助后,该国家居然立即翻脸

黑翼天使
2026-07-21 10:36:00
消息称OPPO、vivo拒绝三星电子2026Q3存储报价

消息称OPPO、vivo拒绝三星电子2026Q3存储报价

IT之家
2026-07-22 14:55:14
马特乌斯:除了无缘参赛的意大利,德国就是这届最大的失败者

马特乌斯:除了无缘参赛的意大利,德国就是这届最大的失败者

懂球帝
2026-07-21 23:37:08
陪玩陪睡只是皮毛!继手伸进裤子后,又一女星自曝,50多都不放过

陪玩陪睡只是皮毛!继手伸进裤子后,又一女星自曝,50多都不放过

不似少年游
2026-06-22 19:32:51
A股新晋“股王”,业绩预增超800%!

A股新晋“股王”,业绩预增超800%!

证券时报
2026-07-22 17:18:03
拒绝重演戴安娜悲剧!乔治迎十三岁入读伊顿,威廉凯特护航未来国王

拒绝重演戴安娜悲剧!乔治迎十三岁入读伊顿,威廉凯特护航未来国王

世界王室那些事
2026-07-22 18:30:13
难怪没见到张柏芝身影,王菲被曝频繁探望谢贤柏芝提前让儿子返港

难怪没见到张柏芝身影,王菲被曝频繁探望谢贤柏芝提前让儿子返港

秋姐居
2026-07-22 19:15:33
中国女篮VS尼日利亚,比赛时间地点落实,宫鲁鸣容得下花臂的邓雨婷

中国女篮VS尼日利亚,比赛时间地点落实,宫鲁鸣容得下花臂的邓雨婷

体育大学僧
2026-07-22 09:38:33
太气人!东莞一服装厂倒闭,工资发不全,老板甩狠话:走司法程序

太气人!东莞一服装厂倒闭,工资发不全,老板甩狠话:走司法程序

谭谈社会
2026-07-21 19:32:52
签约如同儿戏!半个多月前刚刚签下,半个多月后湖人就把他裁掉了

签约如同儿戏!半个多月前刚刚签下,半个多月后湖人就把他裁掉了

稻谷与小麦
2026-07-22 00:05:13
瞒不住了!谢贤死因曝光,火葬全程内情流出,难怪狄波拉哭到失态

瞒不住了!谢贤死因曝光,火葬全程内情流出,难怪狄波拉哭到失态

阿讯说天下
2026-07-21 11:31:47
今日重要赛事!7月22日,CCTV5、CCTV5+直播节目表

今日重要赛事!7月22日,CCTV5、CCTV5+直播节目表

薇说体育
2026-07-22 10:30:04
“黄毛爸爸,酒蒙子妈妈”,上海小学生天崩开局,结局却有反转

“黄毛爸爸,酒蒙子妈妈”,上海小学生天崩开局,结局却有反转

世界圈
2026-07-21 08:00:14
邹市明巅峰专访画面出圈!冉莹颖全程调整坐姿一心展示绿色高跟鞋

邹市明巅峰专访画面出圈!冉莹颖全程调整坐姿一心展示绿色高跟鞋

阿废冷眼观察所
2026-07-22 00:08:16
刚在校运会夺俩冠军,16岁少年因深夜“扰嫖”殒命,母亲泣诉:“孩子有错,但错不致死”,案发地旅馆深陷涉黄传闻,长期有学生上门打闹

刚在校运会夺俩冠军,16岁少年因深夜“扰嫖”殒命,母亲泣诉:“孩子有错,但错不致死”,案发地旅馆深陷涉黄传闻,长期有学生上门打闹

大风新闻
2026-07-22 11:02:04
2026-07-22 20:36:49
薛定谔的BUG
薛定谔的BUG
有态度网友ytd
383文章数 75关注度
往期回顾 全部

科技要闻

马斯克看笑了:谷歌什么都有 偏偏没最强AI

头条要闻

白岩松:阿根廷犯规次数少 不像大家印象中踢得"很脏"

头条要闻

白岩松:阿根廷犯规次数少 不像大家印象中踢得"很脏"

体育要闻

阿根廷的亚军:单核足球的极限?

娱乐要闻

47岁汤唯宣布二胎产子 大女儿10岁

财经要闻

宜家出售八城"蓝盒子" 30年大店逻辑生变

汽车要闻

上汽贾健旭谈汽车全球化:出海要合规 欧洲人只爱小车是误解

态度原创

数码
健康
手机
房产
公开课

数码要闻

Raspberry Pi发布10英寸Touch Display 2 售价80美元

爸妈说的小毛病,可能是中风先兆!

手机要闻

2000 元手机怎么选?避开三大套路,看完不再盲目跟风交学费

房产要闻

冲刺500亿美元IPO,海南又要迎来超级巨头!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版