Как эти методы в моих методах экземпляра контроллера представления? - PullRequest
0 голосов
/ 02 апреля 2012

Я новичок в программировании на iOS.Я вижу, что в моем контроллере представления есть функции, такие как

- (void) viewDidLoad

Как viewDidLoad метод экземпляра, обозначаемый дефисом?Я не думаю, что когда-либо создавал этот класс.

Ответы [ 5 ]

3 голосов
/ 02 апреля 2012

Когда вы создаете файл * .xib (представление) в Xcode и устанавливаете его класс (контроллер) в инспекторе идентификации, экземпляр этого класса создается при загрузке файла * .xib через

[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]

И viewDidLoad вызывается автоматически после полной загрузки файла * .xib.

Это можно увидеть, просто создав новый проект iOS с одним представлением в Xcode.В AppDelegate.m вы увидите строку, аналогичную приведенной выше в методе -(BOOL) application: didFinishLaunchingWithOptions:.В файле ViewController.xib, если вы нажмете «Владелец файла» и покажете Инспектора идентификации, вы увидите, что класс ViewController - это тот, «связанный» с * .xib.

1 голос
/ 02 апреля 2012

(void) viewDidLoad вызывается при загрузке представления (при его отображении), поэтому никогда не вызывайте viewDidLoad какого-либо calss исключительно, иначе вам придется поддерживать стеки, поскольку MVC имеет свой стек для вызова этих методов.viewDidLoad будет вызываться при первом появлении представления и не будет вызываться, если представление переходит в фоновый режим и выходит на передний план.

1 голос
/ 02 апреля 2012

Objective-C различает методы экземпляра и методы класса .

метод экземпляра - это сообщение, которое может быть отправленоэкземпляр класса (т. е. переменная объекта), а метод класса - это сообщение, которое может быть отправлено только самому классу:

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

Эти методы будут вызываться следующим образом:

[MyClass someClassMethod];

id myObject = [[myClass alloc] init];
[myObject someInstanceMethod];
1 голос
/ 02 апреля 2012

- (void)viewDidLoad объявлено в UIViewController, поэтому любой подкласс UIViewController, который вы создаете, будет вызывать этот метод автоматически при загрузке представления. Apple просто предоставляет его пользователям в шаблоне по умолчанию в качестве места, где разработчики могут выполнять любые виды инициализации в последнюю минуту в представлении. Таким образом, вы можете подумать, что не создали экземпляр этого класса, но сделали это, когда создали UIViewController.

Если вы загляните в файл заголовка для UIViewController, вы найдете это ...

  • (пустот) viewDidLoad; // Вызывается после того, как представление было загружено. Для контроллеров представления, созданных в коде, это после -loadView. Для просмотра контроллеры разархивированы из пера, это после установки представления.
1 голос
/ 02 апреля 2012

viewDidLoad - это метод класса UIViewController, он вызывается, когда загружается представление viewcontrollers ... здесь - это ссылка на документацию по классу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...