美文网首页
swift-init方法中是否会触发属性观察者?

swift-init方法中是否会触发属性观察者?

作者: GitArtOS | 来源:发表于2021-02-25 11:58 被阅读0次

init方法中是否会触发属性观察者?

class GitArtOS{
    var content: String = "测试init方法中是否会触发属性观察者?"{
        //新值存储之前调用
        willSet{
            print("willSet newValue \(newValue)")
        }
        //新值存储之后调用
        didSet{
            print("didSet oldValue \(oldValue)")
        }
    }
    
    init() {
        self.content = "init方法中是否会触发属性观察者?"
    }
}

运行后发现:并没有打印输出,所以有以下结论

  1. init方法中,如果调用属性,并不会触发属性观察者
  2. init方法作用是初始化当前变量,为了程序正常运行,在确保变量没有初始化完成之前是不允许修改的,因为除了结构中默认的前16个字节,其他属性会调用memset清理内存空间(因为有可能被别人用过,是脏数据),最后才会赋值。

【总结】:init方法声明默认值时,都不会触发属性观察者


哪里可以添加属性观察者

  1. 结构体定义存储属性
  2. 通过结构体继承存储属性
  3. 通过结构体继承计算属性

相关文章

  • swift-init方法中是否会触发属性观察者?

    init方法中是否会触发属性观察者? 运行后发现:并没有打印输出,所以有以下结论: 在init方法中,如果调用属性...

  • iOS KVO(基本使用 触发模式 属性探究 自定义KVO等)

    一、基本使用 1、注册观察者(为被观察这指定观察者以及被观察者属性) 2、实现回调方法 3、触发回调方法 4、移除...

  • KVO使用和原理

    KVO是OC中观察者模式的一种实现,一个对象监测另一对象某属性是否发生变化,当被观察者某个属性发生改变时,会触发观...

  • KVC的本质

    通过KVC修改属性会触发KVO么? 会触发通过-_isKVOA方法判定是否有监听器(_isKVOA为KVO生成的N...

  • iOS KVO 监控数组 addObject 无法触发观察者问

    使用自身观察,selectArray 是self 的属性 但是, 无法触发观察者的方法,后来高手指点,addObj...

  • 浅谈swift中的属性观察者

    Swift-属性观察者(willSet和didSet) 属性观察者,类似于触发器.用来监视属性的除了初始化之外的属...

  • KVO

    key - value - observer 观察者观察的是属性是否执行了setter方法、或者是否使用了KVC赋...

  • swift 属性专题

    计算属性 简写设置器 在swift中setter/getter方法的实现 属性观察者 属性包装 属性包装映射值

  • 四.KVC

    通过KVC修改属性会触发KVO么?会触发KVO,就算是没有set方法,只有成员变量也会触发,因为kvc内部猜测应该...

  • PHP中的魔术方法及魔术方法触发时机

    PHP中的魔术方法的触发时机 __get($name)当调用一个不可访问的成员属性的时候,会自动触发。可以利用这个...

网友评论

      本文标题:swift-init方法中是否会触发属性观察者?

      本文链接:https://www.haomeiwen.com/subject/pegyfltx.html