搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > iOS程序员 > Swift 实践:属性

Swift 实践:属性

iOS程序员 2020-07-01

 存储属性、计算属性


存储属性:会存储常量或变量作为实例的一部分,只能由类和结构体定义。存储在实例的内存中。


计算属性:会计算值(而非存储),可以由类、结构体和枚举定义。本质就是方法、不占用实例的内存



 lazy 属性 


类似我们在 OC 里经常写的懒加载。有以下两点需要注意:

  • lazy只能修饰var变量;必须有一个初始化的值

  • 必须有一个初始化的值

struct TestStuct { lazy var para1 = [String]()  var para2: Int = 0}
class Test { lazy var label : UILabel = { let l = UILable() return l }()}



 属性观察者 

var totalSteps: Int = 0 { willSet(newTotalSteps) { //  print("About to set totalSteps to \(newTotalSteps)") } didSet { // 会在一个新值被存储后被调用。 if totalSteps > oldValue { print("Added \(totalSteps - oldValue) steps") } }}



 只读属性 

var pagetype: ChatPageType = .wenzhenvar isWz: Bool { // 只读属性 get { if self.pagetype == .wenzhen { return true } else { return false } }}



 类型属性 

类型属性只能通过类型访问。

  • 存储类型属性:整个程序运行过程中,只有1分内存(类似全局变量)

  • 计算类型属性

struct Car { static var count: Int = 0 // 结构体使用static定义类型属性,类使用class init() { Car.count += 1 }}


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Swift 实践:属性》的版权归原作者「iOS程序员」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注iOS程序员微信公众号

iOS程序员微信公众号:ioscxy

iOS程序员

手机扫描上方二维码即可关注iOS程序员微信公众号

iOS程序员最新文章

精品公众号随机推荐

下一篇 >>

Swift | Set集合