Pregunta

acabo de comenzar el aprendizaje de Objective C quien tiene experiencia en Java y este sitio ha sido de gran ayuda para responder a un montón de mis preguntas, pero he golpeado un problema que no logro entender muy. Theres una buena cantidad para ser leído sobre el tema, pero no acabo de encontrar dónde he ido mal.

He leído esto:

Objetivo C no soporta los miembros de datos de clase (datos es decir, compartidos por todos los objetos de la misma clase), sin embargo, pueden ser emuladas mediante el uso del modificador de estática. Por ejemplo, se declara una variable de recuento int estática en el archivo de implementación de la clase Empleado resultaría en toda Empleado objetos que comparten una sola variable entera llamada recuento.

Sin embargo, parece que he terminado con esta funcionalidad, sin tratar ... y yo no lo quiero!

El escenario es que tengo una categoría de UIImageView en el que estoy declareing una variable global (justo debajo de mi línea @implementation) para contar un evento en particular y que se use en mis nuevos métodos.

@implementation UIImageView (Draggable)    
int touchesCount = 0;    
// methods ...

Todo funciona bien si tengo una sola UIImageView. Sin embargo, cuando se crea y añadir una segunda instancia de UIImageView esta variable de recuento se comparte entre el comportamiento inesperado de dos dando.

La figura puede ser relevante para mostrar la forma en que estoy creando los objetos:

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
UIImageView *myImageView2 = [[UIImageView alloc] initWithFrame:myImageRect];
// ... (create, manipulate and set 2 images to the 2 views)
[self.view addSubview:myImageView];
[self.view addSubview:myImageView2];

Aparte de eso, alguna sugerencia sobre dónde podría ir mal?

Gracias!

Editar:. Para ilustrar un poco más de lo que estoy haciendo con los 2 puntos de vista, yo en este caso es un ViewController

¿Fue útil?

Solución

Lo que busca son variables de instancia, pero no pueden añadir categorías aquellas a una interfaz Apple :

Tenga en cuenta que una categoría no puede declarar variables de instancia adicionales para la clase; sólo incluye métodos.

Usted debe estar utilizando herencia lugar:

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top