Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Swift 结构体简单学习

$
0
0

这里写图片描述

定义

    /// 这里我定义了一个结构体类型
    /// 结构体类型是一个新的Siwft类型 (命名类似于 Int Double)
    /// 用来描述一个人的所带属性 name = "" age = 0
    struct PersonStruct {
        var name = " "
        var age = 0
    }
    /// 接下来我定义了一个类
    /// 其中包含PersonStruct结构体类型
    class Person{
        var personstruct = PersonStruct()
        var habbit = " "
    }

实例化

    /// 其中PersonStruct 和Person定义了抽象的PersonStruct, Person, 接下来我们进行实例化
    /// 结构体和类都使用构造器语法来生成新的实例, 在结构体名和类名后加()
    let personStruct = PersonStruct()
    let person = Person()

属性访问

    /// 属性访问
    print("The PersonStruct Name is \(personStruct.name)")
    /// 属性赋值操作
    /// 可以直接访问结构体的子属性
    person.personstruct.name = "summmerxx"
    person.habbit = "love coding"
    print("person->personstruct->name is \(person.personstruct.name) habbit is \(person.habbit)")

结构体赋值的例子

    let obj = PersonStruct(name: "summerxx2", age: 18)
    var obj1 = obj
    /// 把obj1.name 修改为暖暖
    obj1.name = "暖暖"
    /// 接下来我们来看看
    print("obj name is \(obj.name)") // summerxx2
    print("obj1 name is \(obj1.name)") // 暖暖
    /// 在将 obj 赋予给 obj1 的时候,实际上是将 obj 中所存储的值(values)进行拷贝. 只是单纯的进行值拷贝 

再看看类

    /// 类的操作
    let personObj = Person()
    personObj.habbit = "Beatiful things"

    let personObj1 = personObj
    personObj1.habbit = "Not habbit"

    print("personObj habbit is \(personObj.habbit)") // Not habbit
   /// 在将 personObj 赋予给 personObj1 的时候,实际上是将 personObj 存储的地址值进行拷贝.

接下来看看使用场景, 究竟什么情况下使用结构体, 在Objective-C开发的时候, 用于数据存储我一般都是使用类, 也就是MVC中的Model

  • 结构体的主要目的是用来封装少量相关简单数据值。
  • 有理由预计一个结构体实例在赋值或传递时,封装的数据将会被拷贝而不是被引用。
  • 任何在结构体中储存的值类型属性,也将会被拷贝,而不是被引用
  • 结构体不需去继承另一个已存在类型的属性或者行为。

总结: Siwft 结构体简单学习就到这, 待补充~

作者:sinat_30162391 发表于2016/10/11 11:31:15 原文链接
阅读:20 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>