Я заметил, что в демо-версии калькулятора для Stanford CS193p соединение IBOutlet перетаскивалось из метки в заголовочный файл. Однако соединение IBAction было напрямую создано в файле .m. Я пробовал читать документацию и искать в Google, но не смог найти причину этого.IOS CS193p - Почему соединение IBAction перетащили в файл .m, а не в .h?
Я бы сказал, что метод IBAction digitPressed также должен быть объявлен в файле заголовка (не должен ли он быть частью интерфейса?).
Я, очевидно, довольно новичок в Objective C (в основном работал на Java), поэтому я уверен, что у меня нет чего-то основного.
Может ли кто-нибудь объяснить это?
Возможность объявить IBOutlets в файле .m и связать их в IB довольно нова. Демо и учебники не все догнали. Это, безусловно, лучшее решение и позволяет избежать очень плохих практик, таких как изменение IBOutlets другого объекта (чего вы никогда не должны делать). –
@ danh, можете ли вы объяснить, почему выходы и действия не должны быть общедоступными? Как View обращается к ним в контроллере, если они не являются общедоступными? – Rahul
ViewController может быть запутанным именем, если вы учились в MVC. Это не так, как вы думаете, сочетание двух сверстников в этом аббревиатуре. Лучше думать об этом как о том, что контролирует представление. В этом смысле имеет смысл держать свое мнение в секрете. Это не правило или курс, просто обычная практика. Вид - это свойство контроллера вида, а подклассы, которые вы создаете, часто имеют дополнительные подсмотры, которые они контролируют. Этот контроль обычно является довольно абсолютным, поскольку они не разделяют этот контроль с другими. Позвольте мне немного поработать над Google, и я отправлю ее здесь. – danh