有没有人有官方参考,为什么不应该直接调用'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)。如果你告诉'self'和'super'视图viewWillDis出现它可能会在框架中做一些可能在以后引起问题的事情。我认为这些方法只能由框架调用。但是,这是我的意见,而不是官方消息来源。头文件似乎没有提供任何相关信息。
任何帮助表示感谢。
答案 0 :(得分:2)
没有技术原因你不能。
但你不应该。
这是一种糟糕的编码习惯,你可能会使读者感到困惑,或者更糟糕的是,让他/她不信任你。
良好的编码实践如下:
- (void)delegateMethod
{
[self doCommonWork];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self doCommonWork];
}
- (void)doCommonWork
{
// …
}