Swift属性
来源:互联网 发布:如何提升淘宝宝贝权重 编辑:程序博客网 时间:2024/05/16 23:41
属性的存储
属性的主要作用是存储数据,可以常量属性和变量属 性;
struct FixedLengthRange {var firstValue: Int let length: Int}var rangeOfThreeItems =FixedLengthRange(firstValue: 0,length: 3) // the range represents integer values 0, 1, and2 rangeOfThreeItems.firstValue = 6// the range now represents integer values 6, 7, and 8
但是 rangeOfFourItems 实例为常量属性也是不可以修改的。
l
et rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)// this range represents integer values 0, 1, 2, and 3 rangeOfFourItems.firstValue = 6
延时存储属性
延时存储属性是初始化时候不分配值,直到第一次使 用它。
属性@lazy 声明。
class DataImporter {/*DataImporter is a class to import data from anexternalfile.The class is assumed to take a non-trivial amount of time toinitialize.*/var fileName = "data.txt"// the DataImporter class would provide dataimporting functionality here}class DataManager {@lazy varimporter= DataImporter()var data = ""// the DataManager class would provide data management functionality here}let manager= DataManager() manager.data += "Some data" manager.data += "Some more data"println(manager.importer.fileName)
计算属性
有的时候一些属性是通过其他的属性计算得出的,通 过 get 和 set 访问器对其访问。
//定义 Point struct Point {var x =0.0, y = 0.0}//定义 Size struct Size {var width = 0.0, height = 0.0}//定义 Rect struct Rect {var origin = Point()var size = Size()var center: Point {get {let centerX = origin.x+ (size.width / 2)let centerY = origin.y + (size.height / 2)return Point(x: centerX, y: centerY)}set(newCenter) {origin.x = newCenter.x - (size.width / 2)origin.y = newCenter.y - (size.height / 2) }}}var square =Rect(origin: Point(x: 0.0, y: 0.0), size: Size(width: 10.0,height: 10.0))let initialSquareCenter =square.center square.center = Point(x: 15.0, y: 15.0) println("square.origin is now at (\(square.origin.x),\(square.origin.y))")
属性观察者
为了监听属性的变化,swift 通过了属性观察者。
• willSet 观察者是在存储之前调用。
• didSet 新值存储后调用。
class StepCounter {var totalSteps: Int = 0{willSet(newTotalSteps) {println("About to set totalSteps to\(newTotalSteps)")}didSet {if totalSteps >oldValue {steps")}println("Added \(totalSteps - oldValue)}let stepCounter = StepCounter()stepCounter.totalSteps = 200// About to set totalStepsto 200// Added200steps stepCounter.totalSteps = 360// About to set totalStepsto 360// Added160steps stepCounter.totalSteps = 896// About to set totalStepsto 896// Added536steps
静态属性
静态属性在结构体中使用 static 定义,类中使用 class
定义。
struct SomeStructure {static var storedTypeProperty = "Some value."static var computedTypeProperty: Int{// return anInt value here }}class SomeClass {class varcomputedTypeProperty: Int {// return anInt value here}}
调用的时候可以直接使用类和结构体名调用。 实例:
struct AudioChannel {static letthresholdLevel= 10static var maxInputLevelForAllChannels= 0 var currentLevel:Int = 0 {didSet {if currentLevel > AudioChannel.thresholdLevel {// cap the new audio level to the threshold levelcurrentLevel = AudioChannel.thresholdLevelif currentLevel > AudioChannel.maxInputLevelForAllChannels {// storethis as the new overall maximum input levelAudioChannel.maxInputLevelForAllChannels =currentLevel}}}}var leftChannel =AudioChannel()var rightChannel =AudioChannel()leftChannel.currentLevel = 7println(leftChannel.currentLevel)// prints "7"println(AudioChannel.maxInputLevelForAllChannels)
Swift交流讨论论坛论坛:http://www.cocoagame.net
欢迎加入Swift技术交流群:362298485
0 1
- Swift属性
- Swift -- 属性
- swift属性
- Swift 属性
- Swift属性
- Swift 属性
- Swift属性
- 【Swift】属性
- Swift-属性
- swift 属性
- Swift 属性
- Swift 属性 函数
- Swift --- 2.10属性
- 【Swift】延迟存储属性
- Swift 属性(九)
- Swift静态属性
- Swift之属性(Properties)
- [Swift]属性和下标
- 磨刀不误砍柴工
- C语言入门(20)——使用VC2013对C语言进行调试
- C语言入门(21)——使用DBG对C语言进行调试
- C语言的本质(1)——计算机与二进制
- 如何查看一个session使用了多少undo
- Swift属性
- 菜鸟学SSH(十三)——Spring容器IOC解析及简单实现
- 容器基础操作1
- C语言的本质(2)——二进制、八进制、十六进制与十进制
- 黑马程序员——OC——ARC内存管理
- 规范定义的错误码
- 编程算法 - 连续子数组的最大和 代码(C)
- HTML文档类型
- 121_leetcode_Wildcard Matching