2010-07-07 20 views

Respuesta

30

Es lo mismo como una variable estática en C; las instancias compartirán la variable. Si desea que cada instancia tenga su propia copia, desea una variable de instancia (declarada en el bloque @interface).

+3

Realmente no se puede decir "igual que C." "Subjetivo" C no tiene instancias en el sentido Objetivo. – iter

+6

@iter, es lo mismo que cualquier variable estática en C, es todo lo que quiero decir. Si se trata de un global estático, solo hay uno por unidad de compilación, si es un local estático, hay uno por función (o método en Objective-C) que lo hace referencia. –

78

Los locales estáticos se comparten entre las llamadas de método Y las instancias. Puede pensar en ellos como globales que son visibles sólo dentro de sus métodos:

- (void) showVars { 
    int i = 0; 
    static int j = 0; 
    i++; j++; 
    NSLog(@"i = %i ; j = %i", i, j); 
} 

[...]

[obj1 showVars]; 
[obj2 showVars]; 
[obj1 showVars]; 
[obj2 showVars]; 

llamadas encima del promedio en 2 casos diferentes seria:

i = 1 ; j = 1 
i = 1 ; j = 2 
i = 1 ; j = 3 
i = 1 ; j = 4 
+0

¿Alguna solución para variables locales estáticas específicas de instancia? – fatuhoku

+1

@fatuhoku ¿qué significa eso? ¿Cómo están estáticos si son específicos de la instancia? – lensovet

Cuestiones relacionadas