1 类的介绍

  • Swift也是一门面向对象开发的语言
  • 面向对象的基础是类,类产生了对象
  • 在Swift中如何定义类呢?
    • class是Swift中的关键字,用于定义类
class 类名 : SuperClass {
     // 定义属性和方法
      }
  • 注意:
    • 定义的类,可以没有父类.那么该类是rootClass
    • 通常情况下,定义类时.继承自NSObject(非OC的NSObject)

如何定义类的属性

  • 类的属性介绍

  • Swift中类的属性有多种

    • 存储属性:存储实例的常量和变量
    • 计算属性:通过某种方式计算出来的属性
    • 类属性:与整个类自身相关的属性
  • 存储属性

    • 存储属性是最简单的属性,它作为类实例的一部分,用于存储常量和变量 可以给存储属性提供一个默认值,也可以在初始化方法中对其进行初始化
  • 下面是存储属性以及其他属性的写法

  • 计算属性

    • 计算属性并不存储实际的值,而是提供一个getter和一个可选的setter来间接获取和设置其它属性
    • 存储属性一般只提供getter方法 如果只提供getter,而不提供setter,则该计算属性为只读属性,并且可以省略get{} 类属性(暂时了解)
  • 类属性是与类相关联的,而不是与类的实例相关联

  • 所有的类和实例都共有一份类属性.因此在某一处修改之后,该类属性就会被修改

  • 类属性的设置和修改,需要通过类来完成

监听属性的改变

  • 在OC中我们可以重写set方法来监听属性的改变
  • Swift中可以通过属性观察者来监听和响应属性值的变化
  • 通常是监听存储属性和类属性的改变.(对于计算属性,我们不需要定义属性观察者,因为我们可以在计算属性的setter中直接观察并响应这种值的变化)
  • 我们通过设置以下观察方法来定义观察者
    • willSet:在属性值被存储之前设置。此时新属性值作为一个常量参数被传入。该参数名默认为newValue,我们可以自己定义该参数名
    • didSet:在新属性值被存储后立即调用。与willSet相同,此时传入的是属性的旧值,默认参数名为oldValue
    • willSet与didSet只有在属性第一次被设置时才会调用,在初始化时,不会去调用这些监听方法
  • 监听的方式如下:
    • 监听age和name的变化
class Person : NSObject {
    var name : String? {
        // 可以给newValue自定义名称
        willSet (new){ // 属性即将改变,还未改变时会调用的方法
            // 在该方法中有一个默认的系统属性newValue,用于存储新值
            print(name)
            print(new)
        }
        // 可以给oldValue自定义名称
        didSet (old) { // 属性值已经改变了,会调用的方法
            // 在该方法中有一个默认的系统属性oldValue,用于存储旧值
            print(name)
            print(old)
        }
    }
    var age : Int = 0
    var height : Double = 0.0
}
let p : Person = Person()
// 在赋值时,监听该属性的改变
// 在OC中是通过重写set方法
// 在swift中,可以给属性添加监听器
p.name = "why"
//p.name = "yz"

12-Swift中的类的更多相关文章

  1. ios – 覆盖Swift中的超类委托

    我正在开发一个包含两个UIViews的Swift(v1.2)项目.MyView和MyViewSubclass.MyView有一个委托,我想在MyViewSubclass中覆盖它作为一个子协议,类似于UITableViews有一个UITableViewDelegate,它也符合超级uiscrollviewdelegate.我的第一个想法是覆盖超类属性,但这会导致编译器错误,因为子类不能覆盖具有不同类

  2. Swift多种实现单例写法

    学习Swift的单例写法,以下提供了5种方式,一起来看看吧!

  3. 12-Swift中的类

    1类的介绍Swift也是一门面向对象开发的语言面向对象的基础是类,类产生了对象在Swift中如何定义类呢?该参数名默认为newValue,我们可以自己定义该参数名didSet:在新属性值被存储后立即调用。与willSet相同,此时传入的是属性的旧值,默认参数名为oldValuewillSet与didSet只有在属性第一次被设置时才会调用,在初始化时,不会去调用这些监听方法监听的方式如下:监听age和name的变化

  4. Swift——类的基本属性

  5. 关于在Swift中重写类属性的困惑

    另外,我应该如何从实例方法中访问属性的值,并且每次都获得正确的值?以下代码是否有效?你非常接近于那里,除了你不能覆盖子类中的静态属性–这就是静态的意思.所以你必须使用类属性,这意味着它必须是一个计算属性–Swift缺少存储的类属性.所以:让我们测试一下:

  6. JavaScript类属性的访问方式详解

    这篇文章主要介绍了JavaScript类属性的访问方式,需要的朋友可以参考下

  7. 一篇文章彻底搞懂Python类属性和方法的调用

    对python 调用类属性的方法详解测试时候类的调用是经常会用到的,下面这篇文章主要给大家介绍了关于Python类属性和方法的调用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  8. PHP 面向对象程序设计之类属性与类常量实现方法分析

    这篇文章主要介绍了PHP 面向对象程序设计之类属性与类常量实现方法,结合实例形式分析了PHP 面向对象程序设计中类属性与类常量的具体功能、原理、实现方法与操作注意事项,需要的朋友可以参考下

  9. PHP中类属性与类静态变量的访问方法示例

    这篇文章主要介绍了PHP中类属性与类静态变量的访问方法,结合实例形式对比分析了php中类的属性、静态变量及常量的各种访问技巧,需要的朋友可以参考下

  10. 详解TS数字分隔符和更严格的类属性检查

    这篇文章主要介绍了TS数字分隔符和更严格的类属性检查,对TS感兴趣的同学,可以参考下

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部