Могут ли существовать компиляторы, которые не обрабатывают файлы до промежуточного состояния?
blockquote>Да, такой компилятор может существовать. Компилятор преобразует читаемый человеком текст в машиночитаемые инструкции, и не требуется, чтобы он проходил через промежуточную форму. Однако десятилетия исследований в области компиляторов показали, что наличие промежуточной формы облегчает компиляцию и создает лучший код.
Могут ли существовать «независимые от языка компиляторы»?
blockquote>Нет, этого нельзя сделать так же, как «не зависящий от языка переводчик» не может существовать для человеческих языков. ,
Первая проблема заключается в том, что разные языки имеют разный синтаксис , поэтому вы не знаете, как слова и символы можно соединить, чтобы сделать правильные утверждения.
Вторая проблема заключается в том, что разные языки имеют различную семантику , поэтому вы не знаете, что означают слова и символы. Например, есть оператор
for
в Scala и операторfor
в C, но то, что они на самом деле делают, очень отличается.И если у вас возникнет желание изобрести новый язык, совместимый со всеми другими языками, вот предупреждение XKCD о стандартах
Я могу предположить то, что могло бы быть проблемой здесь, потому что я сделал ее:
я нашел, что часто, когда я добавляю код 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, интерфейсными причудами и неожиданным закулисным поведением.
loadView
метод в UIViewController
, который на самом деле загрузит представление и присвоит его view
свойство. Это - также местоположение, которое переопределил бы подкласс UIViewController
, если бы Вы хотели программно настроить view
свойство.
viewDidLoad
метод, который называют, после того как представление было загружено. Это называют после того, как loadView называют. Это - место, где можно переопределить и ввести код, который делает дальнейшую начальную настройку представления, после того как это было загружено.
Просто добавив некоторые примеры кода для демонстрации то, что заявил 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];
}