que framework create swift xcode uiview

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 :

  1. Puede buscar intrinsicContentSize desde developer.apple.com .
  2. Puede buscar intrinsicContentSize directamente desde la página de referencia de la API del desarrollador de Apple para UIView .
  3. 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 ).
  4. 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 ).
  5. 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 de intrinsicContentSize .

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 }