float INFINITY pode ser arquivado pelo NSCoder, mas não é

Eu tenho que arquivar umfloat com valorINFINITY, e depois para o dodgeive.
Aqui está o meu código de exemplo:

Objeto a ser arquivado:

@interface CodeInf : NSObject <NSCoding>
@end
@implementation CodeInf
- (void)encodeWithCoder:(NSCoder *)encoder {
    float inf = INFINITY;
    [encoder encodeFloat: inf forKey:@"INFINITY"];
}
- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super init]) {
        float decodedInf = [decoder decodeFloatForKey: @"INFINITY"];
    }
    return self;
}
@end

E aqui está o código de arquivamento / dearchiving:

CodeInf *myCodeInf = [[CodeInf alloc] init];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myCodeInf];
myCodeInf = [NSKeyedUnarchiver unarchiveObjectWithData:data];

O arquivamento funciona, mas o dearchiving aumenta o erro:

* Encerrando o aplicativo devido à exceção não-detectada 'NSRangeException', razão: '* - [NSKeyedUnarchiver decodeFloatForKey:]: value (inf) para a chave (INFINITY) muito grande para caber em float de 32 bits

Isso é um bug no dearchiver, ou algo de errado?

questionAnswers(1)

yourAnswerToTheQuestion