假设我有一个UIVIEwController,它将其VIEw属性的子视图添加为MyVIEw(UIVIEw子类)的实例. MyVIEw依次注册自己从另一个管理器/全局对象接收一些事件,以便它知道如何相应地更新自身(例如:onlineProfilesManager.Refreshed =()=><用新状态>更新UI;).
只要MyVIEw在屏幕上,一切都很好.但是我必须知道它什么时候从屏幕上删除,以便我可以从事件处理程序中取消注册MyVIEw.
在Obj-C中,这可以简单地在dealloc方法中完成,因为当屏幕改变时,UIVIEwController被解除分配 – > MyVIEw从它的supervIEw中删除,然后调用MyVIEw dealloc方法.
在Monotouch中,我不再拥有这种“确定性”流程.我试图在UIVIEwController和MyVIEw析构函数中放置一些print语句,但它们永远不会被调用(原因是因为MyVIEw仍然为事件处理程序注册,因为我不知道何时/如何取消注册它,它永远不会解除分配).
有谁知道在Monotouch中处理这种情况的’模式’是什么?我想我错过了一个基本概念,并在开发我的应用程序时遇到麻烦.
提前致谢.
编辑
我正在编辑我的问题,因为看起来像我的问题的解决方案是使用Weak Event Pattern,但我没有找到Monotouch平台的实现.
有谁知道如何在Monotouch中使用Weak Event Pattern?
解决方法 处理事件的最佳方法是在VIEwWilldisappear中取消注册它们,并在VIEwWillAppear中注册它们.这意味着您不能使用匿名方法,因为您没有引用方法来取消注册它.如果这不符合您的需要,您可以执行与此http://sgmunn.com/blog/2012/05/non-gcd-event-handlers/类似的 *** 作
干杯.
总结以上是内存溢出为你收集整理的ios – MonoTouch中的弱事件模式全部内容,希望文章能够帮你解决ios – MonoTouch中的弱事件模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)