¿Cómo puedo bandera de una función como ser despreciado en iOS Objective-C archivo de encabezado?

StackOverflow https://stackoverflow.com/questions/1443599

Pregunta

¿Cómo puedo bandera de una función como ser despreciado en iOS Objective-C archivo de encabezado?

Supongo que sólo hay algunas palabras clave que puedo seguir después de la función en algún lugar?

Me gustaría una advertencia del compilador para ser generado si alguien intenta usar el desuso de la función, similar al comportamiento observado en la Manzana de la Api.

¿Fue útil?

Solución

Intente agregar un atributo a su declaración de método:

- (void)fooBar __attribute__ ((deprecated));

Tomado de aquí .

Otros consejos

Tim respuesta va a producir, en realidad, una advertencia del compilador;las otras versiones son simplemente comentarios que no tienen ningún efecto w.r.t.el compilador.

Si usted mira en /usr/include/AvailabilityMacros.h, verás cómo Apple hace esto.Que el encabezado de usos __attribute__((deprecated)) y __attribute__((unavailable)) dependiendo de si la API está presente, pero en desuso, o en realidad ha sido eliminado de la OS.

En lugar de __attribute__((deprecated)), puede usar las macros definidas en <cdefs.h>:

- (void)fooBar __deprecated;
// Or better:
- (void)fooBar __deprecated_msg("Use barFoo instead.");

O puede usar las macros definidas en <AvailabilityMacros.h>:

- (void)fooBar DEPRECATED_ATTRIBUTE;
// Or better:
- (void)fooBar DEPRECATED_MSG_ATTRIBUTE("Use barFoo instead.");

Si usa Objective-C, no hay diferencia ya que usará un compilador moderno, por lo que puede optar por la sintaxis corta de Apple __deprecated_msg(). Pero si usa C para multiplataforma, entonces DEPRECATED_MSG_ATTRIBUTE() usa las definiciones de disponibilidad óptimas (por ejemplo, es compatible con GCC3.1).

De SFAuthorization.h de Apple:

/*!
DEPRECATED: Use obtainWithRight:flags:error:
@method permitWithRight:flags:
@abstract Call permitWithRight to gain a right to have
          access to a privilege operation.
@param rightName The name of an authorization right.
@param flags Authorization flags.
*/
- (OSStatus)permitWithRight:(AuthorizationString)rightName
                      flags:(AuthorizationFlags)flags;

Si no está utilizando un creador de documentación automatizado, diría que algo como esto es suficiente:

- (void)doSomething;           /* DEPRECATED */

También puede seguir el manual HeaderDoc . Donde se usa esta sintaxis:

/*!
 * @abstract Foo is good for bar.
 *
 * @deprecated in version 2.0
 */
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top