在扩展章节中,它说:
Swift中的扩展可以:
添加计算属性和计算的静态属性
定义实例方法和类型方法
提供新的初始化程序
定义下标
定义和使用新的嵌套类型
使现有类型符合协议
>但为什么不存储属性?
>内存存储和分配有什么不同?
假设您有一个具有Int存储属性的类.创建实例时,将分配存储以仅包含一个属性.
接下来,您将创建一个扩展并添加String类型的存储属性.创建实例时,存储将分配为包含2个属性,即Int和String.
只要扩展名在范围内,该类就有2个属性.所有扩展名不可用的地方(例如因为它是私有的或内部的),该类都有1个属性.
很容易理解,两个不同上下文中的同一个类与自身不兼容.
此外,您不能假设扩展可以公开,随处可见.想想UIView类:您创建一个扩展并添加一个存储的属性,该属性在您的项目中可见.但UIView也是由UIKit实例化的,例如在网点中,但它无法访问您的自定义扩展.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。