【问题标题】:i need help understanding a few methods in a view based application我需要帮助理解基于视图的应用程序中的一些方法
【发布时间】:2010-01-14 20:02:21
【问题描述】:

当我创建一个新的基于视图的应用程序时,实现文件 (.h) 中有一些方法 我不明白他们的目的,当我查看开发人员中心时,由于它的解释方式,它有点难以理解。

这些方法的目的是什么?用简单的英语来说它们的用途是什么。

- (void)loadView
- (void)viewDidLoad
- (void)viewDidUnload

我猜测 viewdidload 是什么,是当视图被加载并且括号之间的任何内容首先执行时,但是当创建了其他自定义方法时(如果这是 viewdidload 的目的)它如何知道哪个方法执行?代码是从上到下执行的吗?是不是先列出的任何方法都会被执行?

我还注意到括号内的 super 一词以及其他关键字。 super的目的是什么?

谢谢!

【问题讨论】:

    标签: objective-c xcode


    【解决方案1】:

    嗯,“super”是指 Super Class,或者你当前类扩展的父类。

    @interface MyViewController : UIViewController{}

    在上面的代码中,您可以在一些 .h 文件中找到,MyViewController 扩展了 UIViewController。所以,你在 MyViewController 中调用“super”的时候,其实是在调用 UIViewController。

    所以,当您在 MyViewController 中看到以下结构时...

    - (void)viewDidLoad {
        [super viewDidLoad];
        .
        .
        .
        .
        .
    }

    ...意思是当调用viewDidLoad方法时,会先调用它的超类中的方法,然后运行自己的代码。

    如果你让整个 viewDidLoad 方法被注释掉,这意味着父方法将被自动调用,因为你没有像前面的例子那样覆盖它。

    要了解所有方法(loadView、viewDidLoad、viewDidUnload)是什么,请查看 Apple Developer Connection 上的UIViewController Class reference

    干杯,
    VFN

    【讨论】:

      【解决方案2】:

      您的类是系统类 UIViewController 的派生类(在 Objective C 术语中是一个子类)。 [super someMethod] 表示 - 为基类(ObjC 术语中的超类)调用此方法。

      如果您熟悉 C#,则 ObjC 中的 super 与 C# 中的 base 含义相同。和 Java 中的 super 一样。 :)

      系统提供的 UIViewController 类在其 loadView 方法中具有加载功能。该方法由系统调用,它做了很多工作。另一方面,viewDidLoad 方法是在基类中定义的,但作用不大。它的目的是您可以覆盖它并在那里提供您自己的功能。 viewDidUnload 也一样。

      【讨论】:

        猜你喜欢
        • 2016-02-10
        • 2012-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 2012-06-04
        相关资源
        最近更新 更多