Это не чисто любопытство, есть ощущение, что я могу неправильно понять что-то о слабых ссылках в Swift.
Предположим, я создал класс из View Controller и передал его ссылку инициализатору:
class = MyClass(vc: self)
Поскольку раскадровка и окно уже содержат ссылку на этот View Controller, логично, что MyClass имеет слабую ссылку на него (по той же причине все ссылки, созданные в IB, по умолчанию являются слабыми):
class MyClass: NSObject {
private weak var viewController: UIViewController
init(vc: UIViewController) {
self.viewController = vc
super.init
}
func setViewController(_ vc: UIViewController) {
self.viewController = vc
}
...
}
Однако этот код выдает ошибку компиляции, поскольку переменная viewController не является обязательной. Поэтому я должен был добавить '!' чтобы просмотреть объявление контроллера и удалить инициализатор, оставив только setViewController
, что выглядит довольно неестественно.
В чем причина запрета необязательных слабых данных?