• 初步swift语言学习笔记8(保留了很多OC实现)


    笔者:fengsh998
    原文地址:http://blog.csdn.net/fengsh998/article/details/32715833
    转载请注明出处
    假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢!


    虽然swift作为一门新语言,但还保留了很多OC的机制,使得swift和OC更好的融合在一起。假设没有OC基础的先GOOGLE一下。

    如:KVO。DELEGATE。NOTIFICATION。

    详见DEMO。

    import Foundation
    
    @objc   // 须要打开objc标识,否则@optional编译出错
    
    protocol kvoDemoDelegate {
    func willDoSomething()
    @optional  func didDoSomething()  //可选实现,
    }
    
    let ntfname = "test_notification"
    
    class kvoDemo : NSObject //不写NSObject默认就是从NSObject来的
    {
        var delegate: kvoDemoDelegate!
        
        var presult : Double = 0.0
        
        var result : Double {
            get{
                return presult;
            }
        
            set{
              self.presult = newValue
            }
        }
        
        init()
        {
            
        }
        
        func doSomething()
        {
            if let yet = self.delegate?
            {
                delegate!.willDoSomething()
            }
            
            for _ in 1..5
            {
                println("i'm doing now,don't touch me,please.")
            }
            
            if let yet = self.delegate?
            {
                delegate!.didDoSomething!()
            }
        }
        
        func notificationPost()
        {
            let ntf = NSNotificationCenter.defaultCenter()
            ntf.postNotificationName(ntfname, object :nil, userInfo:nil)
        }
        
        deinit
        {
            
        }
    }
    測试:

    class ViewController: UIViewController,kvoDemoDelegate {
        
        //KVO
        override func observeValueForKeyPath(keyPath: String?, ofObject: AnyObject?, change: NSDictionary?, context: CMutableVoidPointer)
        {
            if keyPath == "result"
            {
                var newvalue : AnyObject?

    = change?

    .objectForKey("new"); println("the new value is (newvalue)") } } //delegate func willDoSomething() { println("i will do it.") } func didDoSomething() { println("i had do it.") } //notification func onRecviceNotification(notification:NSNotification) { println("Recevice notification (notification)") } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var kvo = kvoDemo() kvo.addObserver(self, forKeyPath: "result", options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old, context: nil) kvo.result = 280.0 kvo.removeObserver(self,forKeyPath:"result",context: nil) kvo.delegate = self kvo.doSomething() let ntf = NSNotificationCenter.defaultCenter() ntf.addObserver(self, selector:"onRecviceNotification:", name :ntfname, object : nil) kvo.notificationPost() ntf.removeObserver(self) } }


    结果:

    the new value is 280
    i will do it.
    i'm doing now,don't touch me,please.
    i'm doing now,don't touch me,please.
    i'm doing now,don't touch me,please.
    i'm doing now,don't touch me,please.
    i had do it.
    Recevice notification NSConcreteNotification 0x10be60930 {name = test_notification}



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    qt install (1)
    learning rewind func
    learning strrchr func
    learning memchr func
    git lfs setpu(4)
    大端与小端
    git branch/meger step(3)
    git log/show/HEAD step(2)
    调用外部EXE文件
    获取计算机上的所有进程
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4777566.html
Copyright © 2020-2023  润新知