swift - framework - intrinsicContentSize(): el método no invalida ningún método de su superclase
uikit swift 4 (2)
Mientras se realiza la transición de una versión de Xcode a otra, hay diferentes maneras de averiguar por qué su código ya no se compila. Aquí hay algunos recursos para intrinsicContentSize
:
- Puede buscar
intrinsicContentSize
desde developer.apple.com . - Puede buscar
intrinsicContentSize
directamente desde la página de referencia de la API del desarrollador de Apple para UIView . - Puede abrir la página de Difusiones de API de iOS 10.0 para UIKit y buscar instancias de
intrinsicContentSize
con el menú de búsqueda de su navegador (acceso directo: cmd + F ). - Puede buscar
intrinsicContentSize
en la documentación y la referencia de la API de Xcode (ruta: Ayuda > Documentación y referencia de la API , acceso directo: shift + cmd + 0 ). - También puede hacer clic con el botón derecho en cualquier inicializador
UIView
en su código Xcode (por ejemplo,UIView()
), seleccionar Saltar a definición y luego realizar una búsqueda deintrinsicContentSize
.
Estas búsquedas le mostrarán que intrinsicContentSize
, con Swift 3 y iOS 10, no es más un método sino una propiedad computada de UIView
que tiene la siguiente declaración:
var intrinsicContentSize: CGSize { get }
Como consecuencia, deberá reemplazar la implementación del método intrinsicContentSize()
con el siguiente fragmento de código:
override public var intrinsicContentSize: CGSize {
return ...
}
Actualicé a Xcode 8 beta 5 y ahora obtengo el siguiente error en una clase que hereda de UIView:
Method does not override any method from its superclass
override public func intrinsicContentSize() -> CGSize
{
...
}
¿Hay una solución?
Por favor, consulte la última referencia . (Puede encontrarlo fácilmente simplemente poniendo la palabra "intrinsicContentSize" en la barra de búsqueda del sitio de desarrolladores de Apple ).
Declaración
var intrinsicContentSize: CGSize { get }
intrinsicContentSize
ha convertido en una propiedad computada, por lo que debe anularla de esta manera:
override open var intrinsicContentSize: CGSize {
get {
//...
return someCGSize
}
}
O simplemente:
override open var intrinsicContentSize: CGSize {
//...
return someCGSize
}