-
存储属性会占用实例变量的内存空间,且根据
let/var
关键字来生成对应的get/set
方法 -
计算属性不会占用
内存空间
,本质是set/get
方法 - 属性观察者:
-
willSet:
新值存储之前调用,先调用子类,再调用父类 -
didSet:
新值存储之后调用,先调用父类,再调用子类 -
init
方法赋值不会触发属性观察,子类init中调用父类init方法后赋值,会触发属性观察 -
属性观察
可添加在类中的存储属性
、继承
的存储属性
,继承
的计算属性
-
- 延迟存储属性:
• 使用lazy
进行修饰,必须是var
修饰的变量,且有一个默认初始值
• 只有在第一次访问时才会赋值
,并且是线程不安全
的
•lazy
会影响实例对象
被分配的内存大小
,因为lazy
修饰的属性
在底层会被定义为Optionnal
,而optionnal
本质是一个enum
,并且会占用1个字节
大小来存储case
- 类型属性:
• 使用static
修饰,且必须有一个默认初始值
• 是一个全局变量
,只会被初始化一次
,是线程安全
的,本质是通过dispatch_once
实现的
• 可使用创建单例对象
swift-属性总结
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原文博客地址: 浅谈Swift的属性(Property) 今年期待已久的Swift5.0稳定版就已经发布了, 感兴...