#objective-c
#objective-c
Вопрос:
Я просматривал образец приложения Cocoa от Apple (ImageKitDemo) и заметил, что один из исходных файлов (файл .m) на самом деле содержит определение (интерфейс и реализацию) другого класса. Каковы преимущества этого?
Комментарии:
1. Преимущество в том, что вы можете быть более ленивыми и не должны постоянно переключаться между разными файлами кода. Но не инкапсулировать классы в их собственные файлы — крайне неудачное дизайнерское решение.
2. То, как вы решите отразить свои классы в файловой иерархии, является деталью организационной реализации. Наиболее распространенный подход — один класс означает один .h и один .m — но если это имеет организационный смысл, вы можете делать все, что хотите. Иногда, например, если это простая модель, я помещаю интерфейсы для определенного объекта модели, а также интерфейс для набора / массива объектов модели в один файл, потому что очень полезно иметь их рядом друг с другом (и они крошечные).
Ответ №1:
Это также имеет дополнительное преимущество, подчеркивая тот факт, что определенный класс предназначен только для использования в качестве детали реализации другого класса и не должен использоваться где-либо еще.
Комментарии:
1. Это имеет смысл для классов того же типа, которые были бы внутренними классами в java. Я видел, что классы растут слишком поздно, потому что разработчики не хотели создавать еще одну пару файлов, объединение более одного класса в одном файле — лучшее решение, если классы привязаны к достаточно небольшому размеру.
Ответ №2:
Меньшее общее количество файлов в вашем проекте. Кроме того, никакой разницы. Вы могли бы написать целый проект в файле формата 1 .m, если бы действительно захотели.
Комментарии:
1. Кому не нравится прокручивать 100000 строк кода в одном файле? 😉