如果我在每个单元格中都有一个包含图像的表格,并且我将Firebase .observer
放在自定义tableview单元格类中,那么这是否算作为表格的每个单元格运行一个观察者?
因此,如果10个用户每个发布10个单元格并且表格中有100个单元格,那么firebase基本上看到这与100个观察者相同吗?这是一个糟糕的设计吗?
发布后我正在考虑UITableViews
如何工作,并且当前在屏幕上的单元格可能无法实际保持观察者的运行。如果以这种方式工作,这将非常方便和有效,请告诉我。
答案 0 :(得分:0)
首先,你是正确的,因为屏幕上没有的细胞实际上不存在"爱好。
通常,您不希望在单元格内部执行任何密集操作(API调用,呈现等),因为在滚动时,tableview.dequeuereusablecellwithidentifier必须运行生成的每个单元格的代码。在滚动时你会遇到明显的不稳定/ lagg(你可能不会在模拟器上注意到它,因为这些天的计算机速度非常快)。
答案 1 :(得分:0)
根据您的设计,您可能在那里有一个或多个观察员。如果你有一个类的实例调用Firebase的observeEvent
,那么是的,你将有一个单独的观察者到Firebase的数据库,但是这仍然是与数据库的一个连接,因为你可能通过主要这样做FIRDatabase.database.reference()
。
同样,它依赖于您实现表视图的方式。您可以查看UITableViewCell documentation,特别是在可重复使用的单元格和reuseIdentifier
的部分。如果以这种方式实现它,你将始终只在内存中分配(屏幕上的单元格数+ 1)单元格,这意味着相同数量的观察者。
答案 2 :(得分:0)
<button ng-click="controllerVM.onClick()">Button</button>
鉴于您的数据库结构如下所示,您可能希望在用户路径上观察{
"users": {
1: {
"username": "david"
}
},
"posts": {
1: {
"text": "Hello World!"
}
}
"user-posts": {
1: {
1: true
}
}
}
事件。对于您想要观察其用户帖子的每个孩子(用户),例如ChildAdded
会给你一个post id列表。使用这些帖子ID,您可以为每个键填充表格视图单元格并观察完整帖子,例如user-posts/1
。请记住,一旦你创建了观察者,除非你删除它,它将继续监听,无论细胞是否在屏幕上。使用相应的表视图委托方法显示单元格结束时,可以删除观察者。