在firebase sdk的ios Swift实现中,firebase对象应该存储在单例中吗?或者它是否在视图之间自动管理和关闭连接?
例如,在每个视图中创建一个firebase对象会创建多个套接字连接吗?保留一个firebase对象会更有效吗?
let ref = Firebase(url: "https://" + kFireBaseHost + ".firebaseio.com/")
答案 0 :(得分:9)
你不需要制作单身人士。在幕后,Firebase管理单个连接,如果您有多个Firebase对象,或者即使您在一个位置有多个观察者,也会进行相应的重复数据删除。如果您为每个视图创建一个新的Firebase对象,只要它使用相同的基本网址,它仍将使用与服务器相同的连接。
虽然您不需要管理自己拥有的Firebase对象数量,但您应该管理您的观察者。这些不会在视图之间删除。要删除观察者,您可以使用FirebaseHandle
方法使用observeEventType
方法返回的removeObserverWithHandle:
或致电removeAllObservers
。请注意,这两种方法都要求您在与附加观察者的位置相同的URL位置调用它们(尽管它不必是相同的对象,只是相同的URL)。如果您不删除观察者,您可能会看到它们从您离开的视图中触发,因为其他人正在更改数据。您可以阅读更多in the docs under Detaching Blocks。
Swift或Objective-C都是如此。