Sé que admite variables automáticas, pero ¿qué pasa con las variables de clase?¿Objective-C admite variables de clase?
Respuesta
El idioma no admite variables de clase. Implementa un estado específico de clase con las variables globales static
en las unidades de compilación de la implementación.
En la cabecera (.h):
@interface MyClass : NSObject
+(int)val;
@end
En la aplicación (archivo .m):
static int val = 123;
@implementation MyClass
+(int)val {return val;}
@end
Uso:
if ([MyClass val] > 100) ...
este lenguaje tiene que destruirse) – user924
@ user924 Para todos los fines prácticos, el lenguaje ya está muerto. [¿Te has perdido la nota?] (Https://developer.apple.com/swift /) – dasblinkenlight
Lo sé, pero necesito usar OpenCV, y aquí volvemos a utilizar Objective-C – user924
variables de clase son evidentes ObjC viejas variables estáticas.
Foo.m
:
static int foo = 0;
Alternativamente, se puede utilizar un espacio de nombres de C++ en el anonimato si se utiliza ObjC++:
Foo.mm
:
namespace {
int foo = 0;
}
Pero hay otro patrón si quiere beneficiarse de las ventajas de las propiedades:
Foo.h
:
@interface FooShared
@property (atomic, readwrite, strong) Foo* foo;
@end
@interface Foo
+ (FooShared*) shared;
@end
Foo.m
:
@implementation FooShared
@end
static fooShared* = nil;
@implementation Foo
+ (FooShared*) shared
{
if (fooShared == nil) fooShared = [FooShared new];
return fooShared;
}
@end
somewhere.m
:
Foo* foo …;
foo.shared.foo = …;
Puede parecer un poco exagerado, pero es una solución interesante. Utiliza las mismas construcciones y funciones de lenguaje para las propiedades de instancia y las propiedades de "clase". Atomicity on demand, accessors when needed, depuración, breakpoints ... Herencia incluso.
Las mentes creativas pueden encontrar otras formas de hacer todo esto, supongo. :) Pero estás bastante cubierto con estas opciones.
@property (class, nonatomic, copy) NSString *someStringProperty;
pero hay que proporcionar getter y setter
De las notas de la versión de Xcode 8: Objective-C ahora es compatible con las propiedades de clase, los cuales interactúan con propiedades de tipo Swift. Se declaran como: @property (clase) NSString * someStringProperty ;. Ellos nunca son sintetizados. (23891898)
- 1. ¿Java admite variables variables?
- 2. ¿Opencl admite variables booleanas?
- 3. En ObjectiveC, ¿los punteros son variables de instancia de clase inicializadas a 'nil', o de lo contrario?
- 4. ¿JavaScript no admite cierres con variables locales?
- 5. ¿Por qué Scala admite variables ocultas?
- 6. variables de instancia de clase python y variables de clase
- 7. ¿C# admite el uso de variables locales estáticas?
- 8. Variables de clase Ruby
- 9. Variables de clase dinámicas
- 10. ¿Spring MessageSource admite ruta de clase múltiple?
- 11. ObjectiveC Parse Integer from String
- 12. Bloques ObjectiveC equivalente en Java
- 13. objectivec: fb publicar comentario error
- 14. clase de Python - Super variables
- 15. Variables de clase en Javascript
- 16. Variables de instancia vs. variables de clase en Python
- 17. ¿Tiene sentido el momento de llamar al método de la clase superior en ObjectiveC?
- 18. ¿El módulo Parallel :: ForkManager() admite la sincronización en variables globales?
- 19. BASH: ¿Admite variables condicionales como var = "test"? "1": "2"
- 20. Objective-C, variables miembro y variables de clase
- 21. ¿Diferencia entre variables de clase y variables de instancia de clase?
- 22. ObjectiveC: ¿dónde declarar las propiedades de instancias privadas?
- 23. Variables de clase en vistas de carriles?
- 24. Configuración de variables de clase pública
- 25. variables de clase imperiosas de pitón
- 26. C#: (Estático) Variables de nivel de clase
- 27. ¿Por qué Scheme no admite entornos de primera clase?
- 28. Clase de plantilla PHP con variables?
- 29. variables de clase estática Objective C
- 30. accede a variables HttpApplication.Application de una clase
posible duplicado de [Variable de cadena estática en el Objetivo C en el iphone] (http://stackoverflow.com/questions/980083/static-string-variable-in-objective-c-on-iphone) –
http : //stackoverflow.com/questions/1063229/objective-c-static-class-level-variables –