Как создать функцию переопределения, такую ​​как viewDidLoad? - PullRequest
0 голосов
/ 07 октября 2018

Мне просто интересно, как я могу создать такую ​​функцию, как viewDidLoad, которая всегда присутствует, когда я создаю класс, который является подклассом UIViewController.Поэтому я создал имя класса SnapKitView.Тогда я хочу, чтобы каждый раз, когда я создавал класс, который является подклассом SnapKitView, мой override awakeFromCode func всегда присутствует.

например:

class AuthView: SnapkitView {

     //this override func must be always present
     override func awakeFromCode() {

     }     

}

Чего я хочу достичькаждый раз, когда я создаю подкласс SnapKitView, override awakeFromCode уже заполняется наподобие override viewDidLoad.Это возможно?

1 Ответ

0 голосов
/ 07 октября 2018

В родительском классе, в данном случае SnapKitView, определите функцию обычно следующим образом:

func awakeFromCode() {
    // Put any functionality here that applies to ALL subclasses
}

Затем в каждом подклассе, например AuthView, переопределите функцию, используя одну и ту же сигнатуру функции (то же имя и параметры, если они есть)

override awakeFromCode() {
    // This will call the original parent function and execute anything in its function body
    super.awakeFromCode()

    // Then do anything you want this subclass in particular to do here
}


super.awakeFromCode() вызовет реализацию родительской функции этой функции, и вы можете поместить ее либо до, после или между добавленной функциональностью подкласса в зависимости отв каком порядке вы хотите, чтобы он выполнялся.

РЕДАКТИРОВАТЬ: Кроме того, если одному из ваших подклассов не нужно добавлять какие-либо функции помимо того, что делает родительская функция, вы можете просто вызвать родительскую функцию в подклассе, как обычно:awakeFromCode() без ссылки super.Вам нужно ссылаться на super, только если вы переопределите ее и хотите вызывать только родительскую функцию, а не подкласс.

Возможно, вас заинтересует required наследование функции, о котором вы можете прочитать подробнее здесь: Что означает ключевое слово required в Swift?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...