iPhone SDK: каково различие между loadView и viewDidLoad?

Могут ли существовать компиляторы, которые не обрабатывают файлы до промежуточного состояния?

blockquote>

Да, такой компилятор может существовать. Компилятор преобразует читаемый человеком текст в машиночитаемые инструкции, и не требуется, чтобы он проходил через промежуточную форму. Однако десятилетия исследований в области компиляторов показали, что наличие промежуточной формы облегчает компиляцию и создает лучший код.

Могут ли существовать «независимые от языка компиляторы»?

blockquote>

Нет, этого нельзя сделать так же, как «не зависящий от языка переводчик» не может существовать для человеческих языков. ,

Первая проблема заключается в том, что разные языки имеют разный синтаксис , поэтому вы не знаете, как слова и символы можно соединить, чтобы сделать правильные утверждения.

Вторая проблема заключается в том, что разные языки имеют различную семантику , поэтому вы не знаете, что означают слова и символы. Например, есть оператор for в Scala и оператор for в C, но то, что они на самом деле делают, очень отличается.

И если у вас возникнет желание изобрести новый язык, совместимый со всеми другими языками, вот предупреждение XKCD о стандартах

136
задан TheNeil 16 May 2019 в 17:51
поделиться

3 ответа

Я могу предположить то, что могло бы быть проблемой здесь, потому что я сделал ее:

я нашел, что часто, когда я добавляю код init к loadView, я заканчиваю с бесконечным отслеживанием стека

, не читают self.view в-loadView. Только устанавливают это, не делайте , добираются это.

self.view средство доступа свойства вызовы -loadView, если представление в настоящее время не загружается. Существует Ваша бесконечная рекурсия.

обычный способ создать представление программно в-loadView, как продемонстрировано в pre-Interface-Builder примерах Apple, больше похож на это:

UIView *view = [[UIView alloc] init...];
...
[view addSubview:whatever];
[view addSubview:whatever2];
...
self.view = view;
[view release];

И я не обвиняю Вас в том, что Вы не использовали IB. Я придерживался этого метода для всех Instapaper и нахожу меня намного более довольным им, чем контакт со сложностями IB, интерфейсными причудами и неожиданным закулисным поведением.

200
ответ дан 23 November 2019 в 23:39
поделиться

loadView метод в UIViewController, который на самом деле загрузит представление и присвоит его view свойство. Это - также местоположение, которое переопределил бы подкласс UIViewController, если бы Вы хотели программно настроить view свойство.

viewDidLoad метод, который называют, после того как представление было загружено. Это называют после того, как loadView называют. Это - место, где можно переопределить и ввести код, который делает дальнейшую начальную настройку представления, после того как это было загружено.

44
ответ дан 23 November 2019 в 23:39
поделиться

Просто добавив некоторые примеры кода для демонстрации то, что заявил NilObject:

- (void)loadView
{
    // create and configure the table view
    myTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStyleGrouped];   
    myTableView.delegate = self;
    myTableView.dataSource = self;
    myTableView.scrollEnabled = NO;
    self.view = myTableView;

    self.view.autoresizesSubviews = YES;
}

- (void)viewDidLoad 
{
  self.title = @"Create group";

  // Right menu bar button is to Save
  UIBarButtonItem *saveButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];
  self.navigationItem.rightBarButtonItem = saveButtonItem;
  [saveButtonItem release];
}
11
ответ дан 23 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: