Xamarin.ios 什么会导致消息异常:“quot;找不到MonoTouch.UIKit.UIScrollView的构造函数…“;

Xamarin.ios 什么会导致消息异常:“quot;找不到MonoTouch.UIKit.UIScrollView的构造函数…“;,xamarin.ios,Xamarin.ios,我的视图层次结构如下所示: UIView,包含UIView,UIView包含UIScrollView,UIScrollView包含一组加载了xib的视图 (加载的xib视图表示滚动内容,并且都是同一xib的实例。) 当设备上出现内存警告时(至少,我认为这与此有关),堆栈跟踪中会出现以下异常: System.MissingMethodException:找不到MonoTouch.UIKit.UIScrollView+\u UIScrollViewDelegate::.ctor(System.Int

我的视图层次结构如下所示: UIView,包含UIView,UIView包含UIScrollView,UIScrollView包含一组加载了xib的视图

(加载的xib视图表示滚动内容,并且都是同一xib的实例。)

当设备上出现内存警告时(至少,我认为这与此有关),堆栈跟踪中会出现以下异常:

System.MissingMethodException:找不到MonoTouch.UIKit.UIScrollView+\u UIScrollViewDelegate::.ctor(System.IntPtr)

我熟悉troublshooting常见问题解答:“当代码试图实例化从Interface Builder文件引用的类的实例时,会在运行时产生此错误。这意味着您忘记添加以单个IntPtr作为参数的构造函数。”

然而,我这里的情况并非如此——xib的控制器确实实现了前面提到的构造函数。当然,堆栈跟踪指的是UIScrollView,而不是我的类


有什么想法吗?

您正在允许您的UIScrollView进行垃圾收集,而它仍然存在于视图继承权中。当这种情况发生时,我们用来生成事件的隐藏类看起来也是可收集的,并且被销毁


只要您想继续获取UIScrollView上引发的事件,您就应该保留对UIScrollView的托管引用。

您允许您的UIScrollView进行垃圾收集,而它仍然存在于视图继承者权限中。当这种情况发生时,我们用来生成事件的隐藏类看起来也是可收集的,并且被销毁


只要您想继续获取UIScrollView上引发的事件,您就应该保留对UIScrollView的托管引用。

问题似乎不在UIScrollView的构造函数中,而是在UIScrollViewDelegate的构造函数中。问题似乎不在UIScrollView的构造函数中,但在UIScrollViewDelegate的构造函数中。这是修复我的问题的方法:在滚动视图父视图的LoadView中,我一直在做:0)创建一个baseView(只是一个UIView)1)创建scrollView 2)使用一些xib生成的视图填充滚动视图内容3)调用baseView.AddSubview(scrollView)。然而,当在内存警告后第一次访问父视图时调用LoadView时,此操作崩溃。通过颠倒第2步和第3步,生活是美好的。这就是修复我的问题的方法:在滚动视图父视图的LoadView中,我一直在做:0)创建baseView(只是UIView)1)创建scrollView 2)使用一些xib生成的视图填充scrollView内容3)调用baseView.AddSubview(scrollView)。然而,当在内存警告后第一次访问父视图时调用LoadView时,此操作崩溃。通过颠倒步骤2和步骤3,生活是美好的。