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
@(1959),@(24.99)y@YESencajonan int, double y BOOL.- Los números encajonados viajan en colecciones como cualquier objeto.
integerValuey compañía desencajonan de vuelta a tipos C.
Palabras clave y builtins usados aquí
NSArrayNSNumberdoubleintlongreturnvoid
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.
Paso 1 de 3 en Interop con C; paso 22 de 27 en Fundamentos del lenguaje.