为什么像'viewWillDisappear‘这样的方法不应该被直接调用,有没有人有官方的参考?目前有几个关于这个主题的帖子,但没有官方链接,只有观点。
这样做是没有意义的,因为它是从视图的生命周期管理中调用“周期外”的方法。当然,它们可以被覆盖,并且在许多情况下是被覆盖的。
这个问题是关于我遇到的一些代码,其中'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"
}直接调用任何视图层次结构方法(例如viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear)似乎都是错误的。如果你告诉“自我”和“超级”视图viewWillDisappear,它可能会在框架中做一些事情,这可能会在以后导致问题。我认为这些方法应该只由框架调用。然而,这只是我的观点,而不是官方来源。头文件似乎没有提供任何有关这方面的信息。
感谢您的帮助。
发布于 2015-02-20 04:56:00
没有技术上的原因,你不能。
但你不应该这么做。
这是糟糕的编码实践,你可能会让读者感到困惑,或者更糟糕的是,让他/她不信任你。
良好的编码实践如下:
- (void)delegateMethod
{
[self doCommonWork];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self doCommonWork];
}
- (void)doCommonWork
{
// …
}https://stackoverflow.com/questions/28616159
复制相似问题