【问题标题】:Should I call [super viewDidDisappear:animated]; at the beginning or at the end of viewDidDisappear:我应该调用 [super viewDidDisappear:animated];在 viewDidDisappear 的开头或结尾:
【发布时间】:2014-11-09 16:37:05
【问题描述】:

我正在重构 3 年前有人为 iOS 编写的一些 Objective-C 代码。 我看到 viewDidDisapppear: 方法被这样覆盖了:

- (void)viewDidDisappear:(BOOL)animated
{
    [pagingView unloadData];

    [super viewDidDisappear:animated];
}

它工作正常,但我想知道,这条线:

[super viewDidDisappear:animated];

应该在结尾或开头。

我知道 viewDidAppear:写是个好习惯:

[super viewDidAppear:animated];

作为第一行。

另外,我知道对于 dealloc(如果我们不使用 ARC),我们会这样写:

[super dealloc];

在最后。

所以我对 viewDidDisapppear: 的情况有点困惑,它应该在哪里。 最后调用超类的方法对我来说是有道理的,但我有点困惑,不确定这是否是好的做法。

如果你知道确切的答案,请告诉我。

提前致谢!!!

【问题讨论】:

  • 作为一般规则,在创建/激活时您在开头调用 super,在销毁/停用时您在最后调用 super。

标签: ios objective-c model-view-controller uiviewcontroller


【解决方案1】:

基本上,您希望在调用超级视图的“viewDidDisappear”之前删除所有内容,否则可能会意外释放(或设置为 nil 或其他任何内容)。

另外,you do not call [super dealloc] in the case of ARC

【讨论】:

  • 嗯。不情愿+1。我更喜欢这样的答案:设计你的 vc,所以顺序无关紧要......问问自己,你无法控制的继承行为会释放什么,并将这些东西视为设计错误。
  • 这是一个非常出色的观点。我们最近用“hidingViewWillHide”之类的东西写了一个完整的系统(我相信你明白我的意思):如果有什么你必须做的事情,在“其他程序员的东西”之前,你在“将...” - 命名例程。尽管如此,对于初学者来说,“开始创造,结束毁灭”“经验法则”还是有一点要说的。
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2011-11-28
相关资源
最近更新 更多