C# 处理UITableView或UICollectionView单元格

C# 处理UITableView或UICollectionView单元格,c#,ios,uitableview,memory-leaks,xamarin,C#,Ios,Uitableview,Memory Leaks,Xamarin,我有一个使用自定义TableViewCell的UITableView。此TableViewCell包含一个可观察订阅(也可以是手势识别器),在释放单元格时需要释放该订阅 我不清楚何时应该显式调用表视图单元格上的Dispose。CellDisplayEnded仅在单元格由于滚动而不可见时调用,而不是在重新加载TableView或TableView位于popover上且popover被解除时调用。在上述任何情况下,只有当TableView本身被释放时,才会从终结器调用dispose。但我对添加清理代

我有一个使用自定义TableViewCell的UITableView。此TableViewCell包含一个可观察订阅(也可以是手势识别器),在释放单元格时需要释放该订阅

我不清楚何时应该显式调用表视图单元格上的Dispose。CellDisplayEnded仅在单元格由于滚动而不可见时调用,而不是在重新加载TableView或TableView位于popover上且popover被解除时调用。在上述任何情况下,只有当TableView本身被释放时,才会从终结器调用dispose。但我对添加清理代码犹豫不决,因为单元格已经在最终确定的队列中,并且其状态是不确定的。我从Xamarin那里找不到关于如何处理这种情况的指导


我想知道在处理TableViewSource时是否应该处理所有可见的单元格。有什么想法吗?

初始化自定义单元格时,将标记设置为-1&在GetCell方法中使用下面的代码进行检查,以便我们处理不可见的单元格&只显示可见的单元格

if (cell == null)
            {
                cell = new UITableViewCell(UITableViewCellStyle.Default, "identifier");
            }
            else
            {
                if(cell.ContentView!=null)
                {
                foreach (UIView subview in cell.ContentView)
                    {
                        if (subview.Tag == -1)
                        {
                            subview.RemoveFromSuperview();
                        }
                    }
                }
            }

初始化自定义单元格时,将标记设置为-1&在GetCell方法中使用下面的代码进行检查,以便我们处理不可见的单元格&只显示可见的单元格

if (cell == null)
            {
                cell = new UITableViewCell(UITableViewCellStyle.Default, "identifier");
            }
            else
            {
                if(cell.ContentView!=null)
                {
                foreach (UIView subview in cell.ContentView)
                    {
                        if (subview.Tag == -1)
                        {
                            subview.RemoveFromSuperview();
                        }
                    }
                }
            }

在中,Xamarin dev Rolf Bjarne Kvinge建议跟踪列表中的单元格,然后手动对其调用Dispose()。

在中,Xamarin dev Rolf Bjarne Kvinge建议跟踪列表中的单元格,然后手动对其调用Dispose()。

您找到解决方案了吗?我不能用同样的方法处理电池。你找到解决办法了吗?我不能用同样的方法处理细胞