typestar

Boxing con NSNumber en Objective-C

@() sube valores de C a objetos; el unboxing es un accesor por tipo.

#import <Foundation/Foundation.h>

int main(void) {
    @autoreleasepool {
        // @() boxes C values into NSNumber objects for collections.
        NSNumber *year = @(1959);
        NSNumber *price = @(24.99);
        NSNumber *sealed = @YES;

        NSArray<NSNumber *> *pressing = @[ year, price, sealed ];
        NSLog(@"Boxed: %@", [pressing componentsJoinedByString:@" | "]);

        // Unboxing is explicit, one accessor per C type.
        NSInteger y = [year integerValue];
        double p = [price doubleValue];
        NSLog(@"%ld pressing at %.2f, sealed: %d",
              (long)y, p, [sealed boolValue]);
    }
    return 0;
}

Cómo funciona

  1. @(1959), @(24.99) y @YES encajonan int, double y BOOL.
  2. Los números encajonados viajan en colecciones como cualquier objeto.
  3. integerValue y compañía desencajonan de vuelta a tipos C.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
542
Tokens
108
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 100 segundos.

Escribe este fragmento

Paso 1 de 3 en Interop con C; paso 22 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →