我如何修复这个"选择器调用…在托管对象上…这一直是GC'ed"从nib中使用未使用的自定义U

本文关键字:quot nib ed 未使用 自定义 GC 对象 选择器 何修复 调用 一直是 | 更新日期: 2023-09-27 18:10:27

我有一个示例项目,我在其中创建一个股票表视图,它最终将使用一系列自定义表视图单元格。表格视图的nib包含了定义了自定义控制器的视图(TrackingViewController),它本身包含了一个作为子视图的表格视图。nib还包含一个自定义UITableViewCell,我将有一天在表格中使用它。然而,现在自定义单元格没有被引用或使用任何地方;它只存在于笔尖中

当应用程序试图引用自定义视图控制器的视图(即TrackingViewController实例的view属性)时,应用程序会崩溃,并显示消息"System. view"。异常:从objective-c对类型为Empty1的托管对象调用选择器。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版本(build 2), monotouch版本是6.2.3.0 (8d98f5e)

我如何修复这个"选择器调用…在托管对象上…这一直是GC'ed"从nib中使用未使用的自定义U

您需要在SendDataRowCell类中创建一个构造函数,该构造函数接受一个IntPtr:

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

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