c# - 如何修复这个来自 Nib 的 "Selector invoked ... on a managed object ... that has been GC' ed",其中包含未使用的自定义 UITableViewCell?

标签 c# uitableview xamarin.ios

我有一个示例项目,在其中创建股票 TableView ,该 View 最终将使用一系列自定义 TableView 单元格。 TableView 的 Nib 包含定义了自定义 Controller (TrackingViewController) 的 View ,该 View 本身包含一个 TableView 作为 subview 。 Nib 还包含一个自定义 UITableViewCell,有一天我将在表格中使用它。然而,现在自定义单元格没有在任何地方被引用或使用;它只是存在于 Nib 内。

当应用程序尝试引用自定义 View Controller 的 View (即 TrackingViewController 实例的 View 属性)时,应用程序崩溃并显示消息“System.Exception:在类型为 Empty1 的托管对象上从 Objective-c 调用选择器” .SendDataRowCell (0xCFE4900) 已被GC'ed”。我还没有实例化可以调用任何选择器的 SendDataRowCell 类的任何实例,因此我不理解此消息。我没有将对任何自定义单元对象的引用传递给 Objective-C,因为我从未创建过任何自定义单元对象的引用。我什至还没有为表设置 UITableViewSource 实例。

这是界面生成器中我的 nib 文件的屏幕截图: http://i.imgur.com/wb5zDlp.png

这是包含示例项目的所有代码的要点,在该示例项目中,我能够在每次应用程序启动时一致地重现该问题。注意,这不是一个功能齐全的应用程序,也无意成为这样的应用程序;它的存在只是为了证明这个问题。 https://gist.github.com/cscibri/5437899

我正在 Windows 7 x64 上的 Visual Studio 2012 中构建此项目,我使用的是 Xamarin Studio 版本 4.0.4(构建 2),单点触控版本为 6.2.3.0 (8d98f5e)

最佳答案

您需要在 SendDataRowCell 类中创建一个采用 IntPtr 的构造函数:

SendDataRowCell (IntPtr handle)
    : base (handle)
{
}

这是 iOS 实例化 SendDataRowCell 实例时将使用的构造函数。

关于c# - 如何修复这个来自 Nib 的 "Selector invoked ... on a managed object ... that has been GC' ed",其中包含未使用的自定义 UITableViewCell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155880/

相关文章:

iphone - 在 uitableviewcells 问题中添加 uitableview?

c# - Xamarin 中的离线身份验证最佳实践

ios - Xamarin.iOS 10.14/.NET Standard 2.0 支持哪些版本的 iOS?

c# - 通过 WebClient 请求 JSON 返回 URL 抛出异常

c# - MVVM 异步等待模式

c# - TypeDescriptor.GetProperties() 与 Type.GetProperties()

c# - 应用打开时的调用方法

c# - 我可以使用 C#/.NET 以编程方式禁用 Windows 自动播放功能吗?

ios - automaticallyAdjustsScrollViewInsets 在带有 UITableView 的嵌入式 UITableViewController 中不起作用

ios - 在 iPhone SDK 上等待 CLLocationManagerDelegate 的 didUpdateToLocation 方法时,UITableView 不会填充