ios - 在 Objective C 中调用父类(super class)方法的时机是否重要?

标签 ios objective-c iphone oop cocoa-touch

首先还是最后调用父类(super class)的方法有关系吗?例如

-(void)didReceiveMemoryWarning {
   /* do a bunch of stuff */

   [super didReceiveMemoryWarning];
}

对比

-(void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];

   /* do a bunch of stuff */
}

其他方法如 viewWillAppear、willRotateToInterfaceOrientation 等的相同问题

我正在寻找有意义的差异,而不仅仅是风格上或哲学上的差异(尽管我们也欢迎这些差异)。

最佳答案

典型的 Cocoa 约定:

  1. 如果您正在执行设置,请调用 super 第一
  2. 如果你正在表演 拆解,调用 super LAST

因此,初始化、viewDidLoad 等属于第一种情况。内存警告、viewDidUnload 和 dealloc 属于第二种情况。

您还应该设计您的类以遵循此约定。应特别注意任何偏差。

相关SO答案:

`[super viewDidLoad]` convention


添加: 在设置期间首先调用 super 的基本原理是,您希望在扩展功能之前确保一切就绪。推论是,当您解除分配时,您不希望您的子类所依赖的任何父类(super class) ivar 在您有机会处理它们之前被解除分配。

这对于 UI 更新是有意义的,并在下面的评论中指出。

关于ios - 在 Objective C 中调用父类(super class)方法的时机是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1005196/

相关文章:

iphone - 如何更改 UISearchBar 宽度

iphone - iOS 中分层应用程序的示例应用程序/教程

ios - 检测用户退出应用程序的屏幕

ios - 创建新问题 GitHub iOS

ios - 如何停止将超链接移动到新行 UITextView

ios - 当从 Objective-C 的 block 中访问时,对象是否需要 (a) `__block` 修饰符或 (b) 弱引用?

ios - 如何解决 "Autosynthesized property ' myVar' will use synthesized instance variable '_myVar' not existing instance variable 'myVar' "的警告?

iphone - Interface Builder 中的 PNG 透明度

ios - 当对象包含其他对象的数组时,如何解析 JSON?

ios - touchesEnded的点坐标从哪里来?