在Objective C中进行子类化时需要实现的方法

时间:2012-07-23 21:17:52

标签: objective-c ios methods subclassing

我是编程方面的新手(尽管很多年前我已经有过很多C课程),而且我正在学习Objective-C,以便在iPhone上进行编程。我认为这是一个简单的问题,但在寻找一段时间(几天,一天又一天)后,我找不到我正在寻找的答案。

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

  1. 这些是唯一需要担心的两个,还是其他类可能需要实施其他方法呢?
  2. 如果其他类可能有子类化时需要实现的方法,那么通常会找到文档? (我似乎没有在Apple框架文档中看到它,尽管它出现的协议有那种信息)
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

  • 从技术上讲,如果继承的版本足够,则不需要实现initdealloc。此外,ARC并不会让您免于在所有情况下编写dealloc(但它肯定涵盖了绝大多数)。例如,如果您使用malloc为对象分配内存,则需要在dealloc中释放它。
  • 将实例变量添加到类时,需要初始化它们。通常,您可以在指定的初始化程序中执行此操作。同样,如果你不初始化任何东西,你不必编写自己的初始化程序; deinitializer也一样。
  • 当您需要实现方法时,唯一的情况是您采用带有一个或多个标记为@requried的方法的协议。这些方法在协议参考中标记。例如,tableView:cellForRowAtIndexPath:tableView:numberOfRowsInSection:Apple's documentation中标有“required method”标记。

答案 1 :(得分:0)

在继承NSObject(或其任何子类,如UIViewController,UIView等等)时,不需要任何方法。

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

请注意,您必须调用一些超级方法,例如viewWillAppear等。