comprobar si NSNumber está vacío

¿Cómo verifico si un objeto NSNumber es nulo o está vacío?

OK nil es fácil:

NSNumber *myNumber;
if (myNumber == nil)
    doSomething

Pero si el objeto se ha creado, pero no tiene ningún valor porque falló una asignación, ¿cómo puedo verificar esto? Usa algo como esto?

if ([myNumber intValue]==0)
   doSomething

¿Existe un método general para probar objetos en el vacío como NSString disponible (vea estoenviar)?

Ejemplo 1

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];

¿Qué valor haceemptyNumber ¿Contiene? ¿Cómo puedo verificar siemptyNumber ¿esta vacio?

Ejemplo 2

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSString *myString = [dict objectForKey:@"emptyValue"];
if (myString == nil || [myString length] == 0)
    // got an empty value
    NSNumber *emptyNumber=nil;

¿Qué pasa si uso esto después?emptyNumber fue puesto a cero?

[emptyNumber intValue]

¿Obtengo cero?

Ejemplo 3

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *myEmptyValue = [dict objectForKey:@"emptyValue"];
if (myEmptyValue == nil)
    // NSLog is never called
    NSLog(@"It is empty!");

De esta manera, nunca se llama a NSLog.myEmptyValue no esnil y noNSNull. ¿Entonces contiene un número arbitrario?

Respuestas a la pregunta(5)

Su respuesta a la pregunta