Swift:为什么不能在扩展中添加商店属性? store属性和内存中的计算属性之间有什么不同

Swift:为什么不能在扩展中添加商店属性? store属性和内存中的计算属性之间有什么不同,第1张

概述在扩展章节中,它说: Swift中的扩展可以: 添加计算属性和计算的静态属性 定义实例方法和类型方法 提供新的初始化程序 定义下标 定义和使用新的嵌套类型 使现有类型符合协议 >但为什么不存储属性? >内存存储和分配有什么不同? 假设您有一个具有Int存储属性的类.创建实例时,将分配存储以仅包含一个属性. 接下来,您将创建一个扩展并添加String类型的存储属性.创建实例时,存储将分配为包含2个属 在扩展章节中,它说:

Swift中的扩展可以:

添加计算属性和计算的静态属性
定义实例方法和类型方法
提供新的初始化程序
定义下标
定义和使用新的嵌套类型
使现有类型符合协议

>但为什么不存储属性?
>内存存储和分配有什么不同?

假设您有一个具有Int存储属性的类.创建实例时,将分配存储以仅包含一个属性.

接下来,您将创建一个扩展并添加String类型的存储属性.创建实例时,存储将分配为包含2个属性,即Int和String.

只要扩展名在范围内,该类就有2个属性.所有扩展名不可用的地方(例如因为它是私有的或内部的),该类都有1个属性.

很容易理解,两个不同上下文中的同一个类与自身不兼容.

此外,您不能假设扩展可以公开,随处可见.想想UIVIEw类:您创建一个扩展并添加一个存储的属性,该属性在您的项目中可见.但UIVIEw也是由UIKit实例化的,例如在网点中,但它无法访问您的自定义扩展.

看到不同?添加新的存储属性实际上会创建一个与原始类型不同的新类类型 – 因此不允许这样做.有一个特定的工具:继承.

总结

以上是内存溢出为你收集整理的Swift:为什么不能在扩展中添加商店属性? store属性和内存中的计算属性之间有什么不同全部内容,希望文章能够帮你解决Swift:为什么不能在扩展中添加商店属性? store属性和内存中的计算属性之间有什么不同所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存