发布于 2015-12-30 23:45:18 | 186 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swift教程,程序狗速度看过来!

Swift编程语言

SWIFT,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。


Swift中使用KVC和KVO的类都必须必须继承自NSObject

KVC

key-value coding
是一种间接访问对象的机制
key的值就是属性名称的字符串,返回的value是任意类型,需要自己转化为需要的类型
KVC主要就是两个方法
(1)通过key设置对应的属性
(2)通过key获取对应的属性
举例

 
 
class TestForKVC:NSObject{  
    var hwcCSDN = "hello world"  
}  
var instance = TestForKVC()  
var value = instance.valueForKey("hwcCSDN") as String  
instance.setValue("hello hwc",forKey:"hwcCSDN")  
 

KVO
key-value observing
建立在KVC之上的的机制
主要功能是检测对象属性的变化
这是一个完善的机制,不需要用户自己设计复杂的观察者模式
对需要观察的属性要在前面加上dynamic关键字
举例
第一步,对要观察的对象的属性加上dynamic关键字

 
class ToObserver:NSObject{  
    dynamic var hwcDate = NSDate()  
    func updateDate(){  
    hwcDate = NSDate()  
    }  
}  
 

第二步,声明一个全局的用来区分是哪个被观察属性的变量

 
 
private var mycontext = 0  


第三步,在要观察的类中addObserver,在析构中removeObserver,重写observerValueForKeyPath

 
class TestForCSDN:UIViewController{  
    var testVariable = ToObserver()  
    override func viewDidLoad(){  
    super.viewDidLoad()  
    testVariable.addObserver(self,forKeyPath:"hwcDate",options:.New,context:&mycontext)  
}  
    deinit{  
        testVariable.removeObserver(self,forKeyPath:"hwcDate")  
    }  
    overfide func observeValueForKeyPath(keyPath:String,ofObject:AnyObject,change:[NSObject:AnyObject],context:UnsafeMutablePointer<Void>){  
        if(context == &mycontext){  
             println("Changed to:\(change[NSKeyValueChangeNewKey]!)")  
        }  
    }  
}  

这样,就可以在函数observeValueForKeyPath检测到变化了
 



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务