Swift-day9---属性
2018-05-05 本文已影响18人
Cooci_和谐学习_不急不躁
Swift专栏---属性.这一篇简单给大家介绍一下属性.!!!喜欢的小伙伴,可以关注我.
- 存储属性就是存储在特定类、结构体里的一个常量或者变量。
/**
存储属性就是存储在特定类、结构体里的一个常量或者变量。
可以在定义存储属性的时候指定默认值。
可以在构造过程中设置或者修改存储属性的值
*/
class Person{
//储存属性
var name: String?
var age: Int?
}
struct Model{
//储存属性
var p: Person?
var index: Int
}
let p = Person()
p.name = "Cooci"
p.age = 18
let model:Model = Model(p: p, index: 1)
//开发中经常在加载属性利用懒加载 尤其在UI
//lazy var 变量 : 类型 = {创建变量代码}()
class MyView:UIView{
lazy var label = UILabel()
lazy var tableView:UITableView = { () -> UITableView in
let tb = UITableView(frame: CGRect(x: 0, y: 0, width: 300, height: 300), style: .plain)
// tb.delegate = self;
// tb.dataSource = self;
return tb
}()
}
- 计算型属性:不直接储存值,而是通过提供一个getter方法来获取值,然后用一个可选项的setter来间接设置其他的属性或者变量的值
class NewClass{
var firstName = "伊丽莎白"
var lastName = "Cooci"
var fullName: String{
get{
return firstName+lastName
}
}
}
print(NewClass().fullName)
//还可以定义set方法
class Student{
var book = "iOS"
var changeBook:String{
get{
return book
}
set(newBook){
book = newBook
}
}
}
let s = Student()
print(s.changeBook)
s.changeBook = "Swift"
print(s.changeBook)
//计算型属性能够帮助结构体修改属性
struct Animal{
var kind = ""
var age = 0
//如果要用方法修改结构提属性 需要使用mutating
mutating func changeAnimalKind(newKind:String){
self.kind = newKind
}
//上面的方法等同下面的计算型属性:说明计算型属性是对方法的封装
var changeKind:String{
get{
return self.kind
}
set(newKind){
self.kind = newKind
}
}
}
var ani = Animal(kind: "哺乳动物", age: 3)
print(ani.kind)
ani.changeAnimalKind(newKind: "两栖动物")
print(ani.kind)
ani.changeKind = "鱼类"
print(ani.changeKind)
- 属性观察器:非常有意思的特性,可以用来检测属性值的变化
class example{
var age : Int = 10{
//即将赋值了就会来到这里
willSet{
print("example方法 要修改 age了 newValue \(newValue)")
}
//赋值完毕了就来这里
didSet{
print("example方法 赋值完毕 oldvalue == \(oldValue)")
}
}
}
let ex = example()
print(ex.age)
ex.age = 20
print(ex.age)
-
类型属性 ; 代表类的特性 通常用static修饰
class CarClass{ static var whole = 4 } //类型属性不需要实例变量 直接通过类调用 print(CarClass.whole)
Swift-day1---HelloWord
Swift-day2---基本数据类型
Swift-day3---字符串
Swift-day4---闭包(Closures)
Swift-day5---集合类型--数组,集合,字典
Swift-day6---函数
Swift-day7---类
Swift-day8---结构体,枚举
持续更新!!!如有什么不足,还请不吝指出!谢谢!