Я пытаюсь выжать из своего приложения все последние возможности.Я стараюсь использовать Structs над классами везде, где это возможно (без разделения состояний, прямой отправки по умолчанию и т. Д. И т. Д.).Но мои контроллеры представления и объекты UIView, очевидно, все еще являются классами.Я хочу заставить прямую рассылку для каждого из моих методов и элементов данных - из соображений производительности.
Нужно ли по-прежнему отмечать каждые var , let и func в моем классе final , или это так?Достаточно просто пометить класс хостинга как финальный, чтобы все, что под ним использовалось, прямой метод отправки ?
Другими словами: очень утомительно вставлять final везде - перед каждым методом и переменной.Поэтому я надеюсь, что простое размещение этого класса само по себе будет иметь тот же эффект, что и прямая рассылка всем членам класса.Но я не знаю, как это проверить или проверить.
Для тех, кому интересно, о чем я говорю, ознакомьтесь с этой статьей: «Отправка метода в Swift».Структуры и расширения протокола предоставляют статический метод отправки по умолчанию (самая быстрая производительность), а классы - нет.Статические методы в классах делают, но я хочу принудительно использовать Static Dispatch для всех методов экземпляров и элементов данных.
https://www.raizlabs.com/dev/2016/12/swift-method-dispatch/
В документации среды исполнения swift упоминается влияние на способность к подклассу, но не описываетсячто происходит с диспетчерским поведением дочерних элементов и функций классов, помеченных как «окончательные».Было бы неплохо, если бы все, что находится под ним, получило Static Method Dispatch без необходимости отмечать все окончательно по отдельности.
final
Примените этот модификатор к классу или к свойству, методу или члену индекса в классе.Он применяется к классу, чтобы указать, что класс не может быть разделен на подклассы.Он применяется к свойству, методу или индексу класса, чтобы указать, что член класса не может быть переопределен ни в одном подклассе.Пример использования финального атрибута см. В разделе «Предотвращение переопределений».