gpt4 book ai didi

ios - 单点触控/iOS : which place is the best one to unsubscribe the delegate

转载 作者:行者123 更新时间:2023-11-29 13:37:31 25 4
gpt4 key购买 nike

iOS 中订阅事件最好的方法是 ViewDidLoad,但是在关闭 View 时,不会调用 ViewDidUnload()(仅在内存警告时)

哪个地方最适合退订事件?

(在 subviewController 中,我订阅了一个引用 MainViewController 的事件,当两次打开 subview 时,我收到两个事件触发器,因为从未调用 viewdidunload() 中的取消订阅。)

在 ViewWillAppear/ViewWillDisapper 中订阅/取消订阅怎么样?

    public override void ViewWillAppear (bool animated)
{
base.ViewWillAppear (animated);

this.mBL.OrderChanged += HandleOrderChanged;
}

public override void ViewWillDisappear (bool animated)
{
base.VieWillDisappear (animated);
if (this.mBL!=null)
this.mBL.OrderChanged -= HandleOrderChanged;
}

最佳答案

使用 ViewDidLoadViewDidUnload,这些是从 UI 订阅/取消订阅事件的合适位置。

这是一篇关于 iOS 中内存管理的一般文章,我认为适用于此:http://www.buildingiphoneapps.com/buildingiphoneapps/2010/6/25/memory-management-and-viewdidunload.html

现在,如果您不希望在 View 不可见时运行事件,请在事件处理程序中执行如下操作:

if (IsViewLoaded && View.Window != null) {
//code here
}

我发现这是判断 View 是否在屏幕上的最简单方法。

关于ios - 单点触控/iOS : which place is the best one to unsubscribe the delegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com