Tag: 较弱 引用

MonoTouch中的弱事件模式

我曾经使用Objective-C语言开发iOS应用程序,并依靠dealloc方法在我的应用程序中执行一些清理/取消注册任务。 现在在MonoTouch(垃圾收集),它不是一个选项了。 假设我有一个UIViewController ,作为它的View属性的子视图添加MyView ( UIView子类)的一个实例。 MyView进而注册自己接收来自另一个manager / global对象的一些事件,以便它知道如何相应地更新自己(例如: onlineProfilesManager.Refreshed += () => <update UI with the new state>; )。 只要MyView在屏幕上,一切都很好。 但是,我必须知道它何时从屏幕上移除,以便我可以从事件处理程序中取消注册MyView 。 在Obj-C中,这可以简单地在dealloc方法中完成,因为当屏幕更改时, UIViewController被解除分配 – > MyView从它的超级视图中移除,然后调用MyView dealloc方法。 在Monotouch中,我不再有这种“确定性”的stream程。 我试图把一些打印语句在UIViewController和MyView析构函数,但他们从来没有被调用(原因是因为MyView仍然注册的事件处理程序,因为我不知道什么时候/如何取消注册,它永远不会解除分配)。 有没有人知道在MonoTouch中处理这种情况的“模式”是什么? 我想我错过了一个基本的概念,并陷入困境开发我的应用程序。 提前致谢。 编辑我正在编辑我的问题,因为看起来像我的问题的解决scheme是使用弱事件模式,但我没有find一个MonoTouch平台的实现。 有谁知道如何在MonoTouch中使用弱事件模式 ?