这些方法在我的视图控制器实例方法中如何?

时间:2012-04-02 16:42:42

标签: objective-c ios

我是iOS编程新手。我看到我的视图控制器中定义了函数,例如

- (void) viewDidLoad

viewDidLoad如何用连字符表示的实例方法?我不认为我曾经实例化过这门课。

5 个答案:

答案 0 :(得分:3)

在Xcode中创建* .xib文件(视图)并在身份检查器中设置其类(控制器)时,通过

加载* .xib文件时会实例化该类的实例
[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]

* .xib文件完全加载后会自动调用viewDidLoad

您只需在Xcode中创建一个新的Single View iOS项目即可看到这一点。在AppDelegate.m中,您会在-(BOOL) application: didFinishLaunchingWithOptions:方法中看到与上面类似的行。在ViewController.xib文件中,如果单击"文件的所有者"并显示身份检查器,您将看到类ViewController是一个"链接"使用* .xib。

答案 1 :(得分:1)

viewDidLoad是类UIViewController的一个方法,它在viewcontrollers视图加载时被调用... here是对类文档的引用

答案 2 :(得分:1)

Objective-C区分实例方法类方法

实例方法是可以发送到类实例的消息(即对象变量),类方法是只能发送的消息被送到班级本身:

@interface MyClass { }
+ (void)someClassMethod();
- (void)someInstanceMethod()
@end

这些方法将按如下方式调用:

[MyClass someClassMethod];

id myObject = [[myClass alloc] init];
[myObject someInstanceMethod];

答案 3 :(得分:1)

- (void)viewDidLoad在UIViewController中声明,因此您创建的UIViewController的任何子类将在视图加载时自动调用此方法。 Apple只是将其提供给默认模板中的用户,作为开发人员在视图上进行任何类型的最后一分钟初始化的地方。所以你可能认为你没有实例化这个类,但是当你创建一个UIViewController时就做了。

如果你查看UIViewController的头文件,你会发现这个......

  
      
  • (无效)viewDidLoad中; //在加载视图后调用。对于在代码中创建的视图控制器,这是在-loadView之后。对于视图   控制器从笔尖取消归档,这是在设置视图之后。
  •   

答案 4 :(得分:1)

加载视图时(视图出现时)调用(void)viewDidLoad,所以永远不要单独调用任何calss的viewDidLoad,否则你必须维护堆栈,因为MVC有用于调用这些方法的堆栈。 viewDidLoad将在第一次出现视图时被调用,如果视图转到后台并且到达前景,则不会调用它。