Как работает иерархия tableView init ()? - PullRequest
1 голос
/ 16 марта 2020

Я звоню в NewsFeedTableView без аргументов enter image description here

, но в NewsFeedTableView я переопределяю init с аргументами на самом деле.

enter image description here Как это работает? Как называется этот переопределенный init?

1 Ответ

3 голосов
/ 16 марта 2020

Вы создаете NewsFeedTableView, используя инициализатор без параметров. Назначенный инициализатор для UIView является следующим:

init(frame: CGRect)

Назначенный инициализатор всегда будет вызываться во время инициализации любого класса, наследуемого от UIView. init() инициализатор UIView будет вызывать его с CGRect.zero в качестве параметра.

Теперь рассмотрим документацию init (frame: style:) инициализатор UITableView:

Если вы инициализируете табличное представление с помощью метода init UIView (frame :), по умолчанию будет использоваться стиль UITableView.Style.plain.

Итак, в основном:
1. NewsFeedTableView() звонки NewsFeedTableView(frame: CGRect.zero)
2. NewsFeedTableView(frame: CGRect.zero) звонки NewsFeedTableView(frame: CGRect.zero, style: .plain)

Вот почему ваш переопределенный инициализатор вызывается

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