IntrinsicContentSize() - метод не отменяет какой-либо метод из его суперкласса
Я обновился до Xcode 8 beta 5 и теперь получаю следующую ошибку в классе, который наследуется от UIView:
Method does not override any method from its superclass
override public func intrinsicContentSize() -> CGSize
{
...
}
Есть ли способ обхода?
Ответы
Ответ 1
Пожалуйста, проверьте последнюю ссылку.
(Вы можете легко найти его, просто поместив слово "intrinsicContentSize" в строку поиска сайт разработчика Apple.)
Заявление
var intrinsicContentSize: CGSize { get }
intrinsicContentSize
стал вычисленным свойством, поэтому вам необходимо переопределить его следующим образом:
override open var intrinsicContentSize: CGSize {
get {
//...
return someCGSize
}
}
Или просто:
override open var intrinsicContentSize: CGSize {
//...
return someCGSize
}
Ответ 2
При переходе от одной версии Xcode к другой существуют разные способы выяснить, почему ваш код больше не компилируется. Вот несколько ресурсов для intrinsicContentSize
:
- Вы можете искать
intrinsicContentSize
из developer.apple.com.
- Вы можете найти
intrinsicContentSize
прямо из справочную страницу API разработчика Apple для UIView.
- Вы можете открыть iOS 10.0 API Diffs для страницы UIKit и найти экземпляры
intrinsicContentSize
в меню поиска браузера (ярлык: cmd + F).
- Вы можете искать
intrinsicContentSize
из документации Xcode и ссылки на API (путь: Help > Documentation and API Reference, ярлык: shift + cmd + 0).
- Вы также можете щелкнуть правой кнопкой мыши по любому инициализатору
UIView
в коде Xcode (например, UIView()
), выберите Jump to Definition, а затем выполните поиск intrinsicContentSize
.
Эти поисковые запросы покажут вам, что intrinsicContentSize
, с Swift 3 и iOS 10, больше не является методом, а вычисленным свойством UIView
, который имеет следующее объявление:
var intrinsicContentSize: CGSize { get }
Как следствие, вам придется заменить реализацию метода intrinsicContentSize()
на следующий фрагмент кода:
override public var intrinsicContentSize: CGSize {
return ...
}