alguien me puede explicar qué hace @clase de clase en el objetivo & cuáles son los casos en los que deberíamos usar esta declaración.¿Qué hace @class en Objective-C?
Respuesta
Es una declaración directa. Básicamente le dice al compilador que hay una clase de ese nombre. Yo lo uso en las declaraciones de interfaz:
@class Foo;
@interface Bar : NSObject {
Foo *someFoo;
}
@end
Por supuesto que podría importar la cabecera de Foo
lugar:
#import "Foo.h"
@interface Bar : NSObject {
Foo *someFoo;
}
@end
Pero si someFoo
no se expone a los usuarios de Bar
, que iba a importar una cabecera adicional archivo que no les sirve. Con la declaración @class
los usuarios de Bar
ven ninguna importación adicional, porque Foo.h
se importará en el archivo de implementación de Bar
.
se llama una declaración directa.
que utilizan esta directiva para indicar al compilador que hay una clase objc con el nombre especificado. sus otras opciones son incluir la interfaz o usar el id para variables o tipos.
esto es útil para minimizar las dependencias. Los uso siempre que puedo para minimizar las dependencias y reducir significativamente los tiempos de compilación.
es el mismo que en C y C++:
struct mon_struct;
namespace MON { class mon_class; }
+1 para inclinar que esto se debe preferir para reducir tiempos de construcción. –
@class
se utiliza para la creación de avance declaración de cualquier clase. Si está creando cualquier clase cuya implementación le es desconocida, puede hacerlo utilizando la directiva del compilador @class
.
se puede implementar esta clase cuando la aplicación se conoce a usted.
esperanza que esto ayudará a poco más
Por encima de respuesta ya estado casi todas las cosas, me gustaría añadir algo sobre ella.
El @class Foo
es una declaración de avance de la clase Foo. Es como decirle al compilador, existe la clase foo. Así que no te preocupes por eso ahora mismo.
Nota: - Declaración de clase se vuelve muy crítico cuando tanto la clase se necesitan mutuamente. si hacemos la declaración usual de #import entonces, tendríamos un bucle infinito de importaciones y a los compiladores no les gustan los bucles infinitos. Entonces usamos @class Classname
.
- 1. ¿qué hace @class en el desarrollo de iOS 4?
- 2. ¿Por qué "[self class] == [super class]"?
- 3. Bloques ObjectiveC equivalente en Java
- 4. Hace referencia a un archivo .class en IntelliJ Java Project
- 5. ObjectiveC Parse Integer from String
- 6. Por qué las clases se compilan en .class pero la interfaz no lo hace. Interfaz
- 7. objectivec: fb publicar comentario error
- 8. .NET Class Loader - ¿Qué es?
- 9. ¿Por qué Object.class == Class en Ruby?
- 10. ¿Qué es Proxy Class en C++
- 11. ¿Qué hace '@_' en Perl?
- 12. ¿Qué hace == en Ruby?
- 13. ¿Qué hace% en JavaScript?
- 14. ¿Qué hace% {} en Ruby?
- 15. Lo que hace <a href="#" class="view"> mean?
- 16. AutoFac: ¿Qué hace PropertyWiringFlags.AllowCircularDependencies?
- 17. ¿Cuál es la diferencia entre los nuevos Some :: Class y Some :: Class-> new() en Perl? Hace
- 18. ¿Qué hace UpdateModel()?
- 19. ¿Qué hace [:]?
- 20. DefaultMemberAttribute: ¿qué hace?
- 21. ¿Qué hace exactamente org.apache.commons.lang.builder.CompareToBuilder?
- 22. ¿Qué hace new() en `where T: new()?`
- 23. ¿Qué hace <() en Bash?
- 24. ¿Qué hace LayoutInflater en Android?
- 25. ¿Qué hace 'zoom' en CSS?
- 26. ¿Qué hace "^: static" en Clojure?
- 27. ¿Qué hace "%% DatabaseEx" en TSQL?
- 28. ¿Qué hace render_views en rspec?
- 29. ¿Qué hace this.async() en JavaScript
- 30. ¿qué hace -arrayWithArray en realidad?
Explicación brillante, ¡Acabo de aprender algo nuevo! Gracias – pnizzle
Todavía no lo entiendo completamente y sé que es una publicación anterior pero y el ejemplo sería bueno. ¿Qué quiere decir con "Usuarios de Bar", clases que tendrán barra como un objeto en ellos? Imean en tu ejemplo Foo es un objeto en Bar. Entonces, ¿cuál es la diferencia entre #import y @class en esta situación? – Esko918
De hecho, una maravillosa explicación. Me enfrenté a una situación anterior en la que debería haberla usado. De todos modos, ahora ciertamente puedo. :) – Ron