尽管swift作为一门新语言,但还保留了许多OC的机制,使得swift和OC更好的融合在一起。如果没有OC基础的先GOOGLE一下。
如:KVO,DELEGATE,NOTIFICATION。
详见DEMO。
[cpp] view plain copy importFoundation @objc//需要打开objc标识,否则@optional编译出错 protocolkvoDemoDelegate{ funcwillDoSomething() @optionalfuncdIDDoSomething()//可选实现, } letntfname="test_notification" classkvoDemo:NSObject//不写NSObject默认就是从NSObject来的 { vardelegate:kvoDemoDelegate! varpresult:Double=0.0 varresult:Double{ get{ returnpresult; } set{ self.presult=newValue init() funcdoSomething() { ifletyet=self.delegate? delegate!.willDoSomething() for_in1..5 println("i'mdoingNow,don'ttouchme,please.") delegate!.dIDDoSomething!() funcnotificationPost() letntf=NSNotificationCenter.defaultCenter() ntf.postNotificationname(ntfname,object:nil,userInfo:nil) deinit } 测试:
classVIEwController:UIVIEwController,kvoDemoDelegate{ //KVO overrIDefuncobserveValueForKeyPath(keyPath:String?,ofObject:AnyObject?,change:NSDictionary?,context:CMutableVoIDPointer) ifkeyPath=="result" varnewvalue:AnyObject?=change?.objectForKey("new"); println("thenewvalueis\(newvalue)") //delegate println("iwilldoit.") funcdIDDoSomething() println("ihaddoit.") //notification funconRecviceNotification(notification:NSNotification) println("Recevicenotification\(notification)") overrIDefuncvIEwDIDLoad(){ super.vIEwDIDLoad() //DoanyadditionalsetupafterloadingthevIEw,typicallyfromanib. varkvo=kvoDemo() kvo.addobserver(self,forKeyPath:"result",options:NSkeyvalueObservingOptions.New|NSkeyvalueObservingOptions.old,context:nil) kvo.result=280.0 kvo.removeObserver(self,108); List-style:decimal-leading-zero outsIDe; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> kvo.delegate=self kvo.doSomething() letntf=NSNotificationCenter.defaultCenter() ntf.addobserver(self,selector:"onRecviceNotification:",name:ntfname,object:nil) kvo.notificationPost() ntf.removeObserver(self) }
结果:
thenewvalueis280 iwilldoit. i'mdoingNow,don'ttouchme,please. i'mdoingNow,please. ihaddoit. RecevicenotificationNSConcreteNotification0x10be60930{name=test_notification} 总结
以上是内存溢出为你收集整理的初探swift语言的学习笔记八(保留了许多OC的实现)全部内容,希望文章能够帮你解决初探swift语言的学习笔记八(保留了许多OC的实现)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)