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
intrinsicContentSizedesde developer.apple.com . - Puede buscar
intrinsicContentSizedirectamente 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
intrinsicContentSizecon el menú de búsqueda de su navegador (acceso directo: cmd + F ). - Puede buscar
intrinsicContentSizeen 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
UIViewen 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
}