{NSDecimalNumber integerValue} se comporta de manera extraña en iOS8
OK equipo, esto es raro. [NSDecimalNumber integerValue] se comporta de manera extraña.
Estoy sentado en un punto de interrupción, tratando de entender por qué algunas partes de mi aplicación están rotas en iOS8, y estoy viendo una variable llamada "timeSeconds". Aparece así en la Vista de variables de Xcode:
_timeSeconds (NSDecimalNumber *) 344.514533996581994496
Pero cuando lo consulto en el depurador, veo esto:
(lldb) p [self.timeSeconds doubleValue]
(double) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds integerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344
¿Ves eso "-5"? ¿Alguno de ustedes, gente hermosa, puede reproducirlo o explicarlo antes de archivar un radar?
Aquí está el SSCCE:
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"344.514533996581994496"];
NSLog(@"%@", n); // 344.514533996581994496
NSLog(@"%ld", (long)[n intValue]); // 344
NSLog(@"%ld", (long)[n integerValue]); // -5
NSLog(@"%ld", (long)[n unsignedIntegerValue]); // 12
¡Gracias por adelantado!
Mateo