__attribute__((deprecated))
es la forma gcc (también admitida en clang ) de marcar una función / método como obsoleto. Cuando uno está marcado como "obsoleto", se producirá una advertencia cada vez que alguien lo llame.
La sintaxis para funciones normales sería
__attribute__((deprecated))
void f(...) {
...
}
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
y el de los métodos Objective-C sería
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
También puede marcar toda la clase como obsoleta con
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple también proporciona el <AvailabilityMacros.h>
encabezado que proporciona las macros DEPRECATED_ATTRIBUTE y DEPRECATED_MSG_ATTRIBUTE (msg) que se expanden a los atributos anteriores, o nada si el compilador no admite atributos. Tenga en cuenta que este encabezado no existe fuera de OS X / iOS.
Nota al margen, si está usando Swift, usa el @available
atributo para desaprobar un artículo, por ejemplo
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}
__attribute((deprecated(use method XXX instead)))
. Pero esta sintaxis solo está disponible a partir de gcc 4.5, y la versión enviada con Xcode es 4.2 ...DEPRECATED_ATTRIBUTE
También puede utilizar una definición más legible
DEPRECATED_ATTRIBUTE
Se definió en
usr/include/AvailabilityMacros.h
:#define DEPRECATED_ATTRIBUTE __attribute__((deprecated)) #define DEPRECATED_MSG_ATTRIBUTE(msg) __attribute((deprecated((msg))))
Ejemplo de métodos de Objective-C :
@interface MyClass : NSObject { ... } -(void)foo:(id)x DEPRECATED_ATTRIBUTE; // If you want to specify deprecated message: -(void)bar:(id)x DEPRECATED_MSG_ATTRIBUTE("Use baz: method instead."); ... @end
También puede marcar toda la clase como obsoleta:
DEPRECATED_ATTRIBUTE @interface DeprecatedClass : NSObject { ... } ... @end
fuente
DEPRECATED_MSG_ATTRIBUTE
para marcar una clase como obsoleta con un mensaje (como UIAlertView)Swift 5.0
Depreciar cualquier método / clase / estructura / protocolos usando
@available
@available(*, deprecated, message: "Parse your data by hand instead") func parseData() { } @available(*, deprecated, renamed: "loadData") func fetchData() { } @available(swift, obsoleted: 4.1, renamed: "attemptConnection") func testConnection() { } @available(swift, deprecated: 4.0, obsoleted: 5.0, message: "This will be removed in v5.0; please migrate to a different API.")
Posibles parámetros:
Para obtener más información, consulte el documento de apple: Atributos
fuente
Si está usando C ++ 14 en su proyecto xcode, también puede usar el atributo
[[deprecated]]
o[[deprecated("reason")]]
que ahora es parte del lenguaje.ver documentación: http://en.cppreference.com/w/cpp/language/attributes
fuente
- PARA CÓDIGO SWIFT:
Pon esto justo encima del método:
@available(*, deprecated: <#Version#>, message: <#Message#>)
ejemplo:
@available(*, deprecated: 11, message: "Use color assets instead") public struct ColorPaletteItemResource: ColorPaletteItemResourceType { ... }
fuente