A diferencia de Objective-C, Swift no tiene preprocesador, por lo que hay todavía un camino manualmente menospreciar los miembros de una clase?

Estoy buscando algo similar a esto:

-(id)method __deprecated;
InformationsquelleAutor Atomix | 2014-08-20

4 Comentarios

  1. 244

    Usted puede hacer uso de la etiqueta, por ejemplo :

    @available(*, deprecated)
    func myFunc() { 
        //...
    }

    Donde * es la plataforma (iOS, iOSApplicationExtension, macOS, watchOS, tvOS, * para todos, etc.).

    También puede especificar la versión de la plataforma de la que fue introduced, deprecated, obsoleted, renamed, y un message :

    @available(iOS, deprecated:6.0)
    func myFunc() { 
        //calling this function is deprecated on iOS6+
    }
    
    Or
    
    @available(iOS, deprecated: 6.0, obsoleted: 7.0, message: "Because !")
    func myFunc() {
        //deprecated from iOS6, and obsoleted after iOS7, the message "Because !" is displayed in XCode warnings
    }

    Si su proyecto se dirige a múltiples plataformas, puede utilizar varias etiquetas como :

    @available(tvOS, deprecated:9.0.1)
    @available(iOS, deprecated:9.1)
    @available(macOS, unavailable, message: "Unavailable on macOS")
    func myFunc() {
        //...
    }

    Más detalles en el Documentación de Swift.

    • En Swift 3, el =s son reemplazados con :s.
    • Gracias Sam, he editado mi respuesta 😉
    • *, deprecated: 10.0 se van a dejar de usar por iOS 10, tvOS 10 etc, supongo que no debe combinar * con un número de versión? Cualquier idea sobre cómo hacerlo mejor?
    • Es la versión de la app, no iOS
    • Eso no es cierto. A partir de la documentación que enlaza: «la versión de la plataforma especificada»
    • mi mal, es la versión de iOS, puede combinar varias etiquetas como : @available(iOS, deprecated:9.1) @available(tvOS, deprecated:9.0.1)
    • Exactamente, volviendo a mi punto original: @available(*, deprecated: 10.0) por lo tanto es una muy mala idea si el código no sólo se ejecuta en iOS
    • Funciona antes de un class demasiado

  2. 64

    De partida Swift 3 y Swift 4, el número de versión es opcional. Ahora puedes simplemente escribir:

    @available(*, deprecated)
    func foo() {
        //...
    }

    O si desea que un mensaje de ir junto con él:

    @available(*, deprecated, message: "no longer available ...")
    func foo() {
        //...
    }
    • Para Swift 2.3, el número de versión es opcional, también.
    • Para Swift 2.3, la sintaxis parece ser @available(*, deprecated, message = "no longer available ...") cuando se incluye un mensaje.
    • que raro que Apple cambios de parte de ella y no para el resto y llamar 2.3. Signo, voy a actualizar la respuesta, de nuevo, gracias por la nota!
  3. 3

    Usted puede usar esto para auto-corregir entradas con su nueva func

    @available(*, deprecated, renamed: "myNewFunc")
    func myOldFunc() {
       //...
    }
    
    func myNewFunc() {
       //...
    }

    Lugar de * puede utilizar swift , swift número de Versión.

    De funciones obsoletas generar advertencias, pero todavía puede ser llamado. (Advertencia)

    Obsoletas funciones que dejen de ser llamados por completo. (Error)

    @available(swift, deprecated: 4.0, obsoleted: 4.2, message: "This will be removed in v4.2, please migrate to ...")

    o utilizar otras Opciones como iOS, macOS, watchOS, tvOS …

  4. 0
    @available(iOS, deprecated:7.0, obsoleted: <ObsoletedVersion>, renamed: "myFuncNew", message: "Please use new method - myFuncNew()")
    func myFuncOld() {
        //
    }

    Si deployment target es 9.0 y

    1.<ObsoletedVersion> == 10.0warning

    Cómo manualmente menospreciar los miembros de la

    2.<ObsoletedVersion> == 8.0compile error

    Cómo manualmente menospreciar los miembros de la

Dejar respuesta

Please enter your comment!
Please enter your name here