当前位置: 首页 > news >正文

自己电脑做的网站如何映射到公网济宁君天建设公司网站

自己电脑做的网站如何映射到公网,济宁君天建设公司网站,对网站建设建议,软件工程开发流程在 iOS 中#xff0c;KVO#xff08;Key-Value Observing#xff09;是一个强大的观察机制#xff0c;它的底层实现相对复杂。KVO 利用 Objective-C 的动态特性#xff0c;为对象的属性提供观察能力。 KVO 的底层实现 1. 动态子类化 当一个对象的属性被添加观察者时KVOKey-Value Observing是一个强大的观察机制它的底层实现相对复杂。KVO 利用 Objective-C 的动态特性为对象的属性提供观察能力。 KVO 的底层实现 1. 动态子类化 当一个对象的属性被添加观察者时KVO 会在运行时动态地创建该对象的子类并重写该属性的 setter 方法。 动态创建子类KVO 会创建一个新的类这个新类是被观察对象的子类通常这个类的名字是 _NSKVOClassName_ClassName 形式。重写 setter 方法在这个动态创建的子类中KVO 会重写被观察属性的 setter 方法。 2. 重写 setter 方法 重写后的 setter 方法在属性值发生变化时会进行以下操作 触发 willChangeValue(forKey:)通知即将发生变化。调用原始 setter 方法通过消息转发机制调用原始的 setter 方法以实际更新属性值。触发 didChangeValue(forKey:)通知变化已经发生触发观察者回调。 3. 动态方法解析 在 KVO 动态创建的子类中使用 method_setImplementation 方法来重写属性的 setter 方法。 void setAge(id self, SEL _cmd, int newAge) {[self willChangeValueForKey:age];struct objc_super superStruct {.receiver self,.super_class class_getSuperclass(object_getClass(self))};((void (*)(struct objc_super *, SEL, int))objc_msgSendSuper)(superStruct, _cmd, newAge);[self didChangeValueForKey:age]; }KVO 的实现细节 以下是一个简单的示例展示了 KVO 的一些底层实现细节 interface Person : NSObject property (nonatomic, assign) int age; endimplementation Person endPerson *person [[Person alloc] init]; NSLog(Original class: %, object_getClass(person)); // 输出原始类[person addObserver:self forKeyPath:age options:NSKeyValueObservingOptionNew context:nil]; NSLog(Class after adding observer: %, object_getClass(person)); // 输出动态子类[person setAge:30]; [person removeObserver:self forKeyPath:age];KVO 的工作流程 添加观察者 调用 addObserver:forKeyPath:options:context: 方法时KVO 会动态创建子类并重写 setter 方法。原始对象的类指针isa 指针被修改为新创建的子类。 触发观察 当属性值发生变化时调用重写后的 setter 方法。先触发 willChangeValueForKey:然后调用原始 setter 方法更新属性值最后触发 didChangeValueForKey:。触发 didChangeValueForKey: 时会通知所有观察者属性值已经改变。 移除观察者 调用 removeObserver:forKeyPath: 方法时KVO 会将类指针恢复为原始类并移除重写的 setter 方法。 注意事项 自动 KVOKVO 默认仅支持通过 setter 方法修改属性值的情况。直接修改实例变量不会触发 KVO。手动触发 KVO如果需要手动触发 KVO可以调用 willChangeValue(forKey:) 和 didChangeValue(forKey:) 方法。 [self willChangeValueForKey:age]; _age newValue; [self didChangeValueForKey:age];总结 KVO 是 iOS 中基于动态特性实现的观察机制通过动态子类化和方法重写实现。当属性值变化时KVO 会通知所有注册的观察者。这一机制使得对象间的通信更加灵活和高效但也需要注意在使用过程中正确添加和移除观察者以避免内存泄漏或崩溃。
http://www.dnsts.com.cn/news/34834.html

相关文章:

  • python 网站开发怎么部署哈尔滨互联网公司
  • php网站怎么做302做虚假彩票网站判几年
  • 网站源码免费分享莱芜市
  • 网站的模板演示怎么做织梦cms下载
  • 网站规划主要内容深圳物流公司网站
  • 企业搭建网站多少钱医疗保健 网站 备案
  • 企业网站优化服务商网站地图可以自己做么
  • 网站成功案例阿里云域名购买官网
  • 一分钟做网站小网站模板下载 迅雷下载 迅雷下载不了
  • 图书类网站建设策划书烟台龙口网站建设
  • 做数据网站济南做网站互联网公司有哪些
  • 给网站做友情链接金融行业网站模板
  • 如何建设教育信息网站wordpress发文章后显示两篇
  • 做关于车的网站有哪些网站自己维护
  • 城阳网站开发公司电话使用flashfxp上传网站
  • 用python怎么做网站黄聪wordpress
  • 厅门户网站建设网站服务器租用价格 贴吧
  • 爬知乎文章做网站公司网站建设需要什么科目
  • 建立自己的影视网站网站设计费用入哪个会计科目
  • 主题网站的设计方案手写签名设计免费版在线
  • 成都专业网站制作网站网站推广服务网
  • 慈云寺网站建设网站加app建设
  • 建设一个网站主要受哪些因素的影响查询网站服务器
  • 做英语阅读的网站或是app叮当app制作
  • 西安行业网站建设wordpress主题插件不兼容
  • 江阴网站制作设计深圳网站制作哪里好
  • 九江网站建设优化公司深圳专业的网站制作公司
  • 网站专题页面策划wordpress venue
  • 做网站业务员怎么查找客户简单网站 快速建设
  • 金融投资网站源码wordpress 超级卡