gpt4 book ai didi

ios - 如何清理 Xamarin.iOS 中的 UIViewController?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:02 25 4
gpt4 key购买 nike

假设我们有一个自定义的 UIViewContoller。

现在我们必须对 UIViewController 卸载进行一些清理。例如,如果我们在 View Controller 中使用 UIWebView 作为 subview ,建议将其委托(delegate)设置为 null 并在卸载时调用 StopLoading() 方法。

一些消息来源说不建议清理重写 Dispose() 方法,因为它只涉及托管对象的生命周期。

其他消息来源称不建议将 ViewDidDissappear() 用于这些目的,因为它可以被调用两次。

如何正确处理?

最佳答案

ViewDidDisappear()ViewWillDisappear() 不会被多次调用;至少不是没有对 ViewDidAppear()ViewWillAppear() 的平衡调用。如果您看到对disappear 方法的调用多于对appear 方法的调用,那么您的代码中存在错误。如果你想确保,你的清理只发生一次(为了理智),但解决方案不是像这样简单的东西:

bool myCleanupIsDone = false;

public override void ViewDidDisappear()
{
if(myCleanupIsDone)
{
return;
}

myCleanupIsDone = true;
CleanUpWhateverNeedsToBeCleanedUp();
}

你应该差不多never need to override Dispose() 除非您正在处理非托管资源。 Xamarin.iOS 在内部做了很多,但对于您的代码和您的情况而言,它并不相关。

通常您会在 ViewWillAppear() 中创建您需要的对象并在消失方法中清理它们。这样你就不需要检查是否已经清理了一些东西。

关于ios - 如何清理 Xamarin.iOS 中的 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140007/

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