На самом деле нет правильного правила для того, следует ли вам назвать супер-реализацию данного метода. Это то, что должно определяться в каждом конкретном случае, в зависимости от рекомендаций из документации для внедрения этого метода суперкласса и ваших требований.
Просто объяснить, почему два примера вы включили бы так, как они есть, мы можем смотреть на документацию для -[UIView drawRect:], которая гласит:
Если подкласс UIView непосредственно, ваше реализацию этого метода не нужно называть супер. Однако, если вы подклассифицируете класс вида , вы должны вызвать супер в какой-то момент в своей реализации .
и документация -[NSObject awakeFromNib], которая гласит:
Вы должны назвать супер реализацию awakeFromNib, чтобы дать родителю классы возможность выполнить любую дополнительную инициализацию они требуют. Хотя реализация этого метода по умолчанию делает ничего, многие классы UIKit предоставляют непустые реализации.
В большинстве случаев это, вероятно, безопасная ставка на то, что вы должны назвать супер реализацию метода (см. Комментарии ниже). Однако, будьте осторожны, некоторые методы требуют, чтобы вы назвали их супер-реализацию, некоторые - нет, а некоторые даже требуют, чтобы вы вызывали супер-реализацию в определенный момент вашего переопределения. Поэтому помните, когда вы сомневаетесь, всегда обращайтесь к документации.
Правило большого пальца - «читать документы». – matt
@matt Ваш комментарий никому не помогает, просьба указать ссылку на документы или другое сообщение SO. https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html#//apple_ref/doc/uid/TP40014097-CH17-ID196 – alexisSchreier
@alexisSchreier Я не согласен. Я ответил на вопрос очень прямо, кратко и правильно. Чтобы узнать, следует ли назвать super при реализации 'awakeFromNib', вам нужно прочитать документы на' awakeFromNib'. И так далее. Нет более короткого пути. Мой комментарий помогает _everybody_. – matt