gpt4 book ai didi

ios - 可以直接调用viewWillDisappear吗?

转载 作者:行者123 更新时间:2023-11-28 21:50:12 26 4
gpt4 key购买 nike

有没有人有关于为什么不应直接调用诸如“viewWillDisappear”之类的方法的官方引用资料?有几篇关于该主题的现有帖子,但没有官方链接,只有意见。

这样做是没有意义的,因为它是从 View 的生命周期管理中调用“循环外”的方法。当然,它们可以被覆盖,并且在许多情况下被覆盖。

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDisplay-Notifications/RespondingtoDisplay-Notifications.html

问题是我遇到的一些代码,其中“viewWillDisappear”是从某种方法调用的。真正需要调用的是“viewWillDisappear”方法的内容。

例子:

- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// The following two methods are the ones that need to be called below
[self someMethod];
[self anotherMethod];
}

- (void)delegateMethod
{
[self viewWillDisappear:YES];
// Do some other work
// View is moved off-screen, not deallocated, and therefore, does not "disappear"
}

直觉上,直接调用任何 View 层次结构方法(例如 viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear)似乎是错误的。如果您告诉“self”和“super” View viewWillDisappear 它可能会在框架中执行某些操作,这可能会在以后导致问题。我认为这些方法应该只由框架调用。但是,这是我的意见,并非官方消息来源。头文件似乎没有提供任何相关信息。

感谢任何帮助。

最佳答案

没有技术原因你不能。

但你不应该这样做。

这是糟糕的编码习惯,您可能会让读者感到困惑,或者更糟的是,让他/她不信任您。

良好的编码习惯如下:

- (void)delegateMethod
{
[self doCommonWork];
}

- (void)viewWillDisappear:(BOOL)animated
{
[self doCommonWork];
}

- (void)doCommonWork
{
// …
}

关于ios - 可以直接调用viewWillDisappear吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616159/

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