首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以直接调用viewWillDisappear吗?

可以直接调用viewWillDisappear吗?
EN

Stack Overflow用户
提问于 2015-02-20 04:21:30
回答 1查看 541关注 0票数 0

为什么像'viewWillDisappear‘这样的方法不应该被直接调用,有没有人有官方的参考?目前有几个关于这个主题的帖子,但没有官方链接,只有观点。

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

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

这个问题是关于我遇到的一些代码,其中'viewWillDisappear‘是从一些方法调用的。真正需要调用的是'viewWillDisappear‘方法的内容。

示例:

代码语言:javascript
复制
- (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,它可能会在框架中做一些事情,这可能会在以后导致问题。我认为这些方法应该只由框架调用。然而,这只是我的观点,而不是官方来源。头文件似乎没有提供任何有关这方面的信息。

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-02-20 04:56:00

没有技术上的原因,你不能。

但你不应该这么做。

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

良好的编码实践如下:

代码语言:javascript
复制
- (void)delegateMethod
{
  [self doCommonWork];
}

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

- (void)doCommonWork 
{
  // …
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28616159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档