__attribute__((deprecated))
es gcc way (también supported in 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 las funciones normales sería
__attribute__((deprecated))
void f(...) {
...
}
// gcc 4.5+/clang
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
y la de los métodos de Objective-C sería
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
También puede marcar toda la clase como obsoletos con
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple también proporciona el encabezado <AvailabilityMacros.h>
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á utilizando Swift se utiliza el @available
attribute desaprobar un elemento, por ejemplo,
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}
Gracias por esta respuesta rápida, estoy bastante seguro de que ayudará, he buscado por un tiempo antes de pedir :) – Julien
Sólo tengo otra pregunta: ¿es posible añadir un mensaje como "Usar el método XXX en su lugar"? – Julien
@Julien: Sí: '__attribute ((obsoleto (use el método XXX en su lugar)))'. Pero esta sintaxis está disponible solo a partir de gcc 4.5, y la versión enviada con Xcode es 4.2 ... – kennytm