首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift计算属性和存储属性

Swift计算属性和存储属性

作者头像
Light413
发布2020-04-08 16:03:53
2.1K0
发布2020-04-08 16:03:53
举报

swift的副本.png

代码片段示例

声明变量一

    var arr1:[Int] =  {
        return [1,2,3];
    }()

声明变量二

    var arr2:[Int] {
        return [1,2,3];
    }

声明变量三

    var arr3:[Int] {
        get {
            return [1,2,3];
        }
    }

声明变量四

    var arr4:[Int] {
        get {
            return [1];
        }
        
        set {
            print(newValue);
        }
    }

以上为声明属性的几个方式,其中:1和2 两种方式在一些第三方库代码中经常性出现。

解读

1、声明一个存储属性,通过闭包运算赋值。 2、3 作用相同,2是3 的简化形式。声明一个计算属性。只读。 4、声明一个计算属性,可读可写。

由此看出,存储属性可以直接读写赋值。计算属性不能直接对其操作,其本身只起计算作用,没有具体的值。

存储属性和计算属性比较

  • 1 .计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。
  • 2.存储属性可以是变量存储属性(用关键字 var 定义),也可以是常量存储属性(用关键字 let 定义)。计算属性只能(用关键字 var 定义)。
  • 3.计算属性不直接存储值,而是提供一个 getter 和一个可 选的 setter,来间接获取和设置其他属性或变量的值。
  • 4.可以为除了延迟存储属性之外的其他存储属性添加属性观察器,也可以通过重写属性的方式为继承的属性(包括 存储属性和计算属性)添加属性观察器。你不必为非重写的计算属性添加属性观察器,因为可以通过它的 setter 直接监控和响应值的变化。

由此可见Swift的属性和Object-c的属性区别还是挺大的,Object-c属性会有对应的setter 、 getter 方法、对应的实例变量而Swift的属性确没了这些功能。

一步一个脚印,Swift新手新司机开始上路了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码片段示例
  • 解读
  • 存储属性和计算属性比较
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档