【问题标题】:iOS Firebase detach observer listeneriOS Firebase 分离观察者监听器
【发布时间】:2019-05-12 08:14:43
【问题描述】:

我有一个包含两个选项卡的 UITabBarController。两者都在观察 Firebase 数据的变化。

我看到的问题是,当我执行 UITabBarController.dismiss 时,两个选项卡内的侦听器仍然存在。有谁知道当您解雇时firebase是否会删除听众?还是我应该手动删除听众?当我关闭此 UITabBarController 时,我想杀死其侦听器内部的任何 viewController。

我知道建议是在 viewDidAppear 和 viewWillDissAppear 上添加和删除侦听器,主要问题是这是一个人员列表,我不想在每次用户进入 main 时都刷新列表页面..

还有其他人遇到同样的问题吗?在 Android 上很容易,因为一切都会在 onDestroy() 方法上被破坏,但我是 iOS 上的新手,所以我可能遗漏了一些东西。

【问题讨论】:

    标签: ios swift firebase-realtime-database


    【解决方案1】:

    这取决于一点。

    如果您使用observeSingleEvent(of: 附加一个监听器,它将在第一个结果返回后自动删除。

    如果你用observe附加一个监听器,它只会在你call removeObserverWithHandle时被移除。

    请注意,onDestroy() 不能保证在 Android 上运行,因此您也不应该在那里依赖它。通常,如果您希望您的听众比单个 Activity/View 寿命更长,您应该为他们实施自己的生命周期管理。

    【讨论】:

    • 是的,我正在使用带有实时数据的 android 视图模型,所以我知道侦听器正在分离。您知道如何在每次视图出现在 iOS 上时添加和删除侦听器而不加载列表吗?这对用户来说真的很糟糕
    • 如前所述:当不再需要观察者时,您需要调用removeObserverWithHandle() 来移除观察者。通常,这将是您附加它们的相反方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多