2009-10-21 12 views
5

Me estoy haciendo una advertencia en esta línea en mi cabeza, pero yo estoy usando la variable de clase en mi aplicación (en ambos métodos de clase y los métodos de instancia):¿Por qué Xcode informa una advertencia "definida pero no utilizada" para mi variable de clase?

#import <UIKit/UIKit.h> 

static NSMutableArray *classVar; // Xcode warning: 'classVar' defined but not used 

@interface MyViewController : UIViewController { 
+0

Usted tendrá que incluir más código, en el que utiliza it, etc. – MarkPowell

+0

¿Podría mostrar también cómo lo está usando en la implementación? – cdespinosa

+1

Elimine o use la variable y la advertencia desaparecerá. – Steven

Respuesta

14

Esta variable no es una variable de clase/instancia. Cada vez que el archivo de encabezado se incluye en el archivo .m, el compilador crea una nueva variable estática con alcance limitado al archivo que incluye este encabezado. Si intenta obtener una variable de nivel de clase, mueva la declaración al principio del archivo .m respectivo.

+0

ejemplo aquí: http://wiki.gonzofamily.com/a/NSNotification_usage – mattorb

3

ha colocado el classVar fuera de la definición de la interfaz . Esto hará que el compilador crea que está declarando una variable global, y como parece que es un archivo de cabecera (.h), también se creará en todos los archivos, incluido este archivo de encabezado. Supongo que la advertencia se produce al compilar un archivo que no sea MyViewController.m que incluye este archivo de encabezado.

EDITAR Mi sugerencia es que se mueve el classVar en el archivo .m para MyViewController (-interpreta lo que la señorita donde después de la primera)

+0

pero luego no puedes usarlo en otros m archivos. – malhal

6

A static variable tiene alcance del archivo. Como Xcode no puede encontrar la variable que se usa en ese archivo, ve una variable no utilizada. Si realmente desea que la variable sea accesible desde todo su programa, haga una declaración de variable externa y defínalo en su implementación. Si solo está destinado a ser utilizado por esa clase, simplemente mueva la variable estática a su archivo de implementación.

0

Aquí es la forma correcta de hacer esto:

En el .h

extern NSString *const DidAddRecordNotification; 

En el .m

NSString *const DidAddRecordNotification = @"DidAddRecordNotification"; 
Cuestiones relacionadas