gpt4 book ai didi

iphone - 如何移除 KVO 观察者?

转载 作者:行者123 更新时间:2023-12-01 16:59:32 27 4
gpt4 key购买 nike

在 View Controller 中,我创建了一个 subview 数组,可以随时从父 View 中删除,因此它们的生命周期比 View Controller 的生命周期短。

创建它们时,我几乎这样做:

  • 分配/初始化 subview
  • 添加 View Controller 作为 subview 的 frame 的观察者属性(property)。
  • 将其添加到保留数组
  • 将其添加到 View
  • 释放它

  • subview 没有对 View Controller 的引用。

    当用户删除 subview 时,它会被释放,并且我在控制台中收到一个错误,告诉我 View 的观察者 frame key 路径尚未删除。

    当被观察的 subview 不保留对观察者的引用时,如何删除观察者?

    反正没有像 removeAllObservers这样的事情吗? ?

    我宁愿不必在 subview 中创建对观察者的引用,因为它在某种程度上违背了 KVO 的观点(我不妨使用委托(delegate)设置)。

    最佳答案

    我不确定你为什么要观察框架,但如果你只是想知道它什么时候被删除,你可以改用 NSNotificationCenter。从那里您的 subview 可以发布到通知中心它已被更改/删除。然后,您的父 View 将看到该通知,并可以根据通知中的内容对其进行处理。它在某种程度上是一个更松散的 kvo。

    这是一个很好的设置示例。
    Send and receive messages through NSNotificationCenter in Objective-C?

    这样,当 super View 被释放/卸载时,它只需要在通知中心删除它自己就可以看到该术语。

    无论如何,这是除 KVO 和委托(delegate)之外的另一种方法。

    关于iphone - 如何移除 KVO 观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438652/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com