初学swift之KVO

初学swift之KVO

KVO相当于给一个已有对象的属性添加一个属性观察器

KVO三步

1.注册

2.监听

3.移除

//通过xib创建一个slider默认值为0.5

    @IBOutlet weak var slider: UISlider!


//注册(被监听的是slider的value属性)

        /*NSKeyValueObservingOptions的属性

         New:提供更改前的值

         Old:提供更改后的值

         Initial:观察最初的值(在注册观察服务时会调用一次触发方法)

         Prior:分别在值修改前后触发方法(即一次修改有两次触发)*/

        slider.addObserver(self, forKeyPath:"value", options:NSKeyValueObservingOptions.new, context:nil)


//监听slider的value属性

    /*

     keyPath与注册里的forKeyPath相同

     */

    overridefuncobserveValue(forKeyPath keyPath:String?, of object:Any?, change: [NSKeyValueChangeKey:Any]?, context:UnsafeMutableRawPointer?) {

        ifletkey = keyPath{

            ifkey =="value"{

                ifletvalues =slider.value(forKey:"value")as?Double{

                    //移除

                    slider.removeObserver(self, forKeyPath:"value")

                    print(values)

                }

            }

        }

    }


最后效果:当移动slider的时候,slider的value发生改变,打印“0.5”调

因为只调用了一次监听事件之后就移除的监听事件,所以只答应了一次

/*写文章的目的只因学习还有记录笔记,如果大佬看见了有什么不对的地方,可以评论,共同学习,但是由于是新手的原因,请非礼勿骂,共同创建文明社会*/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、假设让你设计一个图片加载器,你会如何设计? 大致流程如下: 1、检查内存缓存,如有,则返回。 2、后台线程开始...
    stfonlye阅读 564评论 0 0
  • 原文地址Dynamo 摘要 面对世界上最大的电商网站 Amazon.com,我们遇到的最大挑战之一就是海量规模下后...
    wangjie_yy阅读 2,212评论 0 3
  • 经过修改后的clearfix是一个多功能的样式,既可以解决高度塌陷,又可以确保父元素和子元素的垂直外边距不会重叠*...
    吴某人_0ad9阅读 173评论 0 0
  • 区块链时代是我们人类想象力之外的未来 刘慈欣在一次演讲里说:“区块链最让人惊叹的一点,就是它用数字技术建立起了一个...
    行车链_LCR阅读 180评论 0 0
  • 此文章是记录自己对于网站爬取的部分知识总结。 对于比较小的需求,直接使用request即可。大的需求使用scrap...
    追风筝的少年_6858阅读 929评论 0 0