定义
/// 这里我定义了一个结构体类型
/// 结构体类型是一个新的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 查看评论