1

总的来说,我是编程新手(尽管我在很多很多年前上过 C 课)并且正在学习 Objective-C 以在 iPhone 上进行编程。我有一个我认为是一个简单的问题,但是在寻找了一段时间(几天,断断续续)之后,我找不到我正在寻找的答案。

我知道当子类化一个Objective-C类时,我应该实现initialize方法和deallocate方法(除非后者使用ARC,如果我是正确的?)。问题是:

  1. 是否只有这两个需要担心,或者其他类是否可能具有需要实现的其他方法?
  2. 如果其他类可能有我在子类化它们时需要实现的方法,那么通常在哪里可以找到该文档?(我似乎没有在 Apple 框架文档中看到这一点,尽管它出现的协议中有这种信息)

谢谢你的帮助!

4

2 回答 2

3
  • init从技术上讲,即使dealloc继承的版本足够,您也不需要实现。此外,ARC 并不能让您dealloc在所有情况下都不必编写(但它肯定涵盖了绝大多数)。例如,如果您使用 为对象分配内存,则malloc需要在dealloc.
  • 当您将实例变量添加到您的类时,您需要初始化它们。通常,您在指定的初始化程序中执行此操作。同样,如果您不初始化任何内容,则不必编写自己的初始化程序;反初始化器也是如此。
  • 唯一需要实现方法的情况是当您采用带有一个或多个方法标记的协议时@requried。这些方法在协议参考中都有标记。例如,tableView:cellForRowAtIndexPath:并且tableView:numberOfRowsInSection:Apple 的文档中标有“必需方法”标签。
于 2012-07-23T21:26:24.487 回答
0

子类化 NSObject(或其任何子类,例如 UIViewController、UIView 等)时不需要任何方法。

如果您创建一个新的,比如说 UIViewController,通常最好将您在新创建的文件中找到的方法保留为指南/模板,但您实际上并不需要保留任何方法。超类总是会调用自己的方法。

但是请注意,您必须调用 super 的某些方法,例如 viewWillAppear 等。

于 2012-07-23T21:25:55.510 回答