В какой член я добавляю свой код? - PullRequest
0 голосов
/ 28 февраля 2012

Я пишу свое первое приложение SIMPLE DB, в основном, автономную базу данных, выбираю список записей, а затем нажимаю на одну из них, чтобы отобразить детали.

В качестве примера я посмотрел более старую книгу (pre xcode 4), потому что в ней был пример, очень похожий на то, что мне нужно было сделать. Таким образом, пример настроил все методы, которые мне нужны для доступа к базе данных, в члене с именем DBAccess.m, и я могу сказать отладчику, что код посещает main.m, а затем MasterViewController.m он выполняет awakeFromNib и didViewLoad, что является удивительным ... НО куда я помещаю свое первое утверждение, которое вызывает нужную мне подпрограмму, в моем файле DBAccess.m? Книга предполагает, что вы ЗНАЕТЕ, где разместить свой код, и оставляет его как упражнение для пользователя ... тьфу.

Я не могу найти однозначного утверждения о том, как вы вставляете свой код в цикл выполнения.

Есть ли цикл выполнения по умолчанию?

1 Ответ

0 голосов
/ 28 февраля 2012

Два классических места для размещения кода - методы init и loadView контроллера представления. Т.е.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
  if (self) {

    // Put DB code here

  }
  return self;
}

или

- (void)loadView
{
  [super loadView];

  // Put DB code here

}

Выбор будет зависеть от того, что вы делаете с данными.

Если данные будут отображаться в элементах пользовательского интерфейса из файла NIB, вы должны быть немного осторожны, так как эти элементы вряд ли будут существовать при запуске метода init. Таким образом, присвоение данных БД элементам пользовательского интерфейса в init может привести к программе, которая выглядит правильно и компилируется, но не отображает ничего на дисплее (это было сделано!). Поэтому вам лучше отложить данные БД до loadView огонь.

Если данные сразу не нужны на экране (или требуются по другим причинам, не связанным с отображением), вы можете загрузить их методом init. Но предостережение заключается в том, что вы теперь расходуете память на вещи, которые могут никогда не отображаться, - таким образом, побеждая любую ленивую загрузку во время метода loadView.

Но все зависит от личных предпочтений.

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