Si tiene Clase A con un "foo" instancia var que tiene un @ propiedad/directiva @ sintetizar y clase B hereda de la clase A, lo hace también necesitan @ property/@ sintetizar "foo"? La razón por la que pregunto es porque cuando trato de usar el "foo" de la Clase B, la clase que llama dice que "foo" no es algo de una unión estructurada o un miembro, lo que me hace creer que necesita ser sintetizado explícitamente.El uso de @ sintetizar/@ propiedad en la herencia de Objective-C
Respuesta
No, no es así. Las propiedades sintetizadas se agregan automáticamente a la clase A y sus subclases.
@Georg: ¡El voto a favor es mío, pero te aseguro que no fue intencional! Hice clic en la flecha hacia abajo por accidente, y ahora el voto es "demasiado viejo para cambiar". Si es tan amable de hacer una pequeña edición, con mucho gusto lo cambiaré a un upvote (que es lo que tenía la intención de hacer en primer lugar). –
@ e.James: hecho. :) –
Gracias. ¡Eso ha estado pesando en mi conciencia! :) –
Al heredar, no debería necesitar redeclarar ninguna propiedad o variable.
Tal vez si publica su archivo de encabezado ClassB o una parte de las personas, entonces puede identificar mejor su problema.
Si tiene Clase A con un "foo" instancia var que tiene un @ propiedad/@ sintetizar Directiva, y la clase B hereda de la clase A, lo hace también necesitan @ propiedad/@ sintetizar "foo"?
Nº
La razón que pido es porque cuando trato de usar "foo" de la clase B, la clase que llama dice ...
No, el compilador lo dice.
... que "foo" no es algo así como una unión estructurada o un miembro, lo que me hace pensar que debe ser sintetizado explícitamente.
Es. En la clase A.
El compilador le está dando la advertencia de que, ya que no sabe nada de la @property, que se debe a que haya declarado ni tampoco importado un encabezado que lo declara. Usted dice que la clase de cabecera A declara la propiedad, así cabecera de la clase A en la importación de implementación de la clase B, por lo que el compilador sabe acerca de la propiedad al compilar la clase B.
Sólo en caso de que esto ayude a alguien.
Me encontré con este problema y leí estas respuestas y todavía no podía acceder directamente a las variables de la superclase. Se declararon como propiedades y se sintetizaron en la superclase y yo importé el encabezado en mi subclase. Estuve atascado hasta que descubrí que necesitaba declarar las variables miembro en la sección @interface en la superclase, así como una propiedad de la superclase ...! p.ej.
@interface BuoyAnnotation : NSObject <MKAnnotation>
{
CLLocationCoordinate2D coordinate;
CLLocation* location;
int type;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) CLLocation* location;
@property (nonatomic, assign) int type;
correcta, sólo declara una @property exterior de la declaración de variables entre llaves miembro típico y luego @synthesize la propiedad en el archivo .m. Me di cuenta de que en la clase secundaria has usado self.propertyName para hacer referencia a ella, pero en la clase padre puedes usar el nombre de la variable instantánea.
- 1. ¿Cómo funciona la propiedad automática de sintetizar en xcode 4.4?
- 2. Objective-C propiedad y sintetizar lógica
- 3. Objective-C sintetizar el nombre de propiedad anulando
- 4. Sintetizar el error "Falta el contexto de la declaración de implementación de la propiedad"
- 5. iPhone XCode propiedad automática, sintetizar y delloc
- 6. Pros y contras del uso de excepción en IOS/ObjectiveC
- 7. Uso de herencia en MSTest
- 8. Propiedad Value Herencia
- 9. Uso de librerías estáticas C/C++ desde iPhone Aplicaciones ObjectiveC
- 10. Uso de patrones de herencia en JavaScript
- 11. Uso de la propiedad showUserLocation de MKMapView
- 12. Herencia de JavaScript y la propiedad del constructor
- 13. herencia .NET: suprimir una propiedad de la clase base
- 14. obteniendo el error "invalid_client" en la muestra gdata-objectivec-client
- 15. El uso de una propiedad BOOL
- 16. Herencia de Java y evitar el uso constante de instanceof
- 17. Está anulando una propiedad de sintetizar en Objectice-C ¿Está bien o mal?
- 18. ¿Se puede sintetizar $ readmem en Verilog?
- 19. Bloques ObjectiveC equivalente en Java
- 20. ¿Cómo sintetizar sonidos?
- 21. Cómo dividir la nueva línea de NSString en ObjectiveC
- 22. herencia de la propiedad de tipo de estilo de lista en Firefox (bug en Firebug?)
- 23. refactorización a los resultados del arco en la propiedad "sintetizar de 'débil' solo está permitida en modo arco o gc"
- 24. Prevenir la herencia de atributos de validación en el modelo
- 25. ¿Un uso para herencia múltiple?
- 26. Uso de luabind y std :: shared_ptr con la herencia
- 27. herencia pitón diamante y el uso de super() en los padres de la clase derivada
- 28. ¿Cómo sintetizar frecuencias exactas en flash?
- 29. objectivec: fb publicar comentario error
- 30. Uso de PropertyInfo para encontrar el tipo de propiedad
Sí, como la interfaz es algo similar a: @interface ClassB: ClassA, necesita # import ClassA.h – Coocoo4Cocoa
Está en el capítulo 8, ¿verdad? – willc2
necesita importar en el archivo de encabezado de clase B - no reenviar declarar clase A e importar en el .m – gheese