• 【Swift】学习笔记(八)——类和结构体


    1、类和结构体的定义

    <pre name="code" class="html">struct Resolution {
        var width = 0
        var height = 0
    }
    class VideoMode {
        var resolution = Resolution()
        var interlaced = false
        var frameRate = 0.0
        var name: String?    //值为可选String类型的name
    }

    
    
    类:keywordclass,  struct:结构体


    2、创建类和结构体的实例(其它语言中称实例为对象。)

    let someResolution = Resolution()
    let someVideoMode = VideoMode()

    咦,非常easy啊,怎么没有keywordnew呢。。

     和将函数赋值给变量是一样的啊。是的。

    就这么简单。无需keyword。


    3、结构体有一个逐属性构造器,类木有。

    let vga = Resolution(640, height: 480)


    4、使用. 点 来訪问属性,包含訪问和赋值。

    someVideoMode.resolution.width = 1280


    5、结构体是值类型,类是引用类型。


    6、类的恒等运算符 等价于(===),不等价于(!==)推断两个变量或常量是否引用了同一个实例


    7、指针无需特定的(*)来表示是一个内存地址引用,也不须要特定的符号(->)来訪问。它和訪问属性是一样的 用 (.)点。


    8、类和结构体的差别

    Swift 中类和结构体有非常多共同点。共同处在于:

    • 定义属性用于存储值
    • 定义方法用于提供功能
    • 定义附属脚本用于訪问值
    • 定义构造器用于生成初始化值
    • 通过扩展以添加默认实现的功能
    • 符合协议以对某类提供标准功能

    与结构体相比,类还有例如以下的附加功能:

    • 继承同意一个类继承还有一个类的特征
    • 类型转换同意在执行时检查和解释一个类实例的类型
    • 解构器同意一个类实例释放不论什么其所被分配的资源
    • 引用计数同意对一个类的多次引用

    9、类和结构体的选择

    依照通用的准则。当符合一条或多条下面条件时,请考虑构建结构体:

    • 结构体的主要目的是用来封装少量相关简单数据值。
    • 有理由估计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。

    • 不论什么在结构体中储存的值类型属性,也将会被拷贝,而不是被引用。
    • 结构体不须要去继承还有一个已存在类型的属性或者行为。

    合适的结构体候选者包含:

    • 几何形状的大小。封装一个width属性和height属性,两者均为Double类型。
    • 一定范围内的路径,封装一个start属性和length属性,两者均为Int类型。
    • 三维坐标系内一点,封装xyz属性。三者均为Double类型。

    在全部其他案例中,定义一个类。生成一个它的实例,并通过引用来管理和传递。实际中,这意味着绝大部分的自己定义数据构造都应该是类,而非结构体。






  • 相关阅读:
    【转】MyEclipse项目的字符编码设置
    【转】VS2008中 ATL CLR MFC Win32 区别
    【转】字符数组与字符指针
    【转】How to: Convert Between Various String Types
    【转】ATL基础BSTR CComBSTR SysAllocString
    【转】PHP ini_set ini_get 可操作配置参数列表
    【转】字符、字符数组、char、string的区别分析
    【转】PHP 计算页面执行时间
    【转】Java 如何判断String为空?
    【转】Converting char array to BSTR
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6938564.html
Copyright © 2020-2023  润新知