Quiero escribir una función o una directiva como NSLog() que toma cualquier tipo de variable, primitivas y objetos. En esa función, quiero distinguirlos.Objetivo-C: Cómo comprobar si una variable es un objeto, una estructura u otra primitiva
sé cómo funciona para objetos:
- (void)test:(id)object {
if ([object isKindOfClass:[NSString class]])
...
pero ¿cómo puedo distinguir objetos a partir de estructuras o incluso enteros o flotadores. Algo así como:
"isKindOfStruct:CGRect" or "isInt"
por ejemplo?
¿Esto es posible? Pensé que ya que puede enviar todo a NSLog (@ "...", objetos, ints, structs) debe ser posible?
¡Gracias por cualquier ayuda!
EDITAR
Mi objetivo final es poner en práctica algún tipo de polimorfismo.
Quiero ser capaz de llamar a mi función:
MY_FUNCTION(int)
MY_FUNCTION(CGRect)
MY_FUNCTION(NSString *)
...
or [self MYFUNCTION:int]...
y en mi_funcion
-(void)MYFUNCTION:(???)value {
if ([value isKindOf:int])
...
else if ([value isKindOf:CGRect])
...
else if ([value isKindOfClass:[NSString class]])
...
}
Sé que isKindOf no existe y ni siquiera se puede realizar tales métodos en los primitivos . Tampoco estoy seguro sobre el "???" tipo genérico de "valor" en el encabezado de la función.
¿Es esto posible?
. isKindOfClass comprueba si una clase es un miembro o una subclase, y isMemberOfClass comprueba si una clase es * exactamente * un tipo de clase. https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html –