swift学习-类,结构的属性-12/25
2016-01-04 本文已影响45人
littlersmall
今天周五。基本的任务都已完成,swift学习也顺利了许多。
今天发现一本基于swift2.0的教材,比我原来看的那边要更新,而且更薄一点,就以这本书为主继续学吧。目前看到118页。
中午上ios论坛,又发现一本讲ios开发框架的书,以swift为基础,只有50页,看完了这本,大概就可以正式开始我的游戏开发了。
1 类和结构
所有的结构体都有一个自动生成的成员逐一初始化器,用于初始化新结构体实例中成员的属性。新实例中给个属性可以通过属性的名称传递到成员逐一初始化器中。
例如:
struct Resolution {
var width = 0
var height = 0
}
var resolution = Resolution() //赋默认值
var resolution1 = Resolution(width: 3, height: 4)
注:与结构体不同,类实例没有默认的成员逐一初始化器。
2 结构体和枚举都是值类型。值类型被赋值给一个变量,常数,或者被传递给一个函数时,实际上操作的是其的拷贝。
在swift中,所有的基本类型:整数,浮点数,布尔值,字符串,数组,字典都是值类型,并且都是以结构体的形式在后台实现的。
所有的结构体的枚举都是值类型,这意味着它们的实例,以及实例中包含的任何值类型属性,在代码中传递的时候都会被复制。
注意:这点和python完全不同,需要特别注意。
「===」恒等运算符,判断两个常量或者变量是否引用同一个实例。
「!==」
3 延迟存储属性。使用lazy修饰的属性为延迟加载属性,只有在第一次访问时才会创建
class DataImporter {
var fileName = "1.txt"
}
class DataManager {
lazy var importer = DataImporter() //不可以用let声明
var data = [String]()
}
let manager = DataManager()
manager.data.append("123")
print(manager.importer.fileName) //只有在第一次访问时才会创建
4 计算属性。除了存储属性外,swift还提供了计算属性。计算属性本身并不存储值,但是提供一种get和set方法来获得值,或设置其他属性的值。
例如:
struct Point {
var x = 0.0
var y = 0.0
}
struct Size {
var width = 0.0
var height = 0.0
}
struct Rect {
var origin = Point()
var size = Size()
var center: Point {
get {
return Point(x: origin.x + 2, y: origin.y + 2)
}
set(newPoint) { //便捷写法 set { origin.x = newValue.x ….}
origin.x = newPoint.x
origin.y = newPoint.y
}
}
}
var square = Rect()
print(square.center)
square.center = Point(x: 1, y: 3)
print(square.origin)
明天又是周末了。
虽然还是有雾霾,还是蛮开心的。