versiones plataforma objective framework ejemplos compiler caracteristicas objective-c cocoa types

objective c - plataforma - ¿Existen NSDouble, NSFloat u otros tipos distintos de NSInteger?



versiones de objective c (3)

En In Cocoa, ¿prefieres NSInteger o solo int regular, y por qué? , se mencionó NSDouble y NSFloat , pero no puedo ver una referencia para aquellos en cualquier documentación. Si el propósito de NSInteger es la seguridad arquitectónica, ¿qué pasa con otros tipos, como el double o el float ?


No hay NSFloat pero sé que la API de gráficos básicos finalmente cambió de float a CGFloat por lo que podría usar un double en algunas arquitecturas.

Lo mejor es usar los tipos exactos que declaran los encabezados de API. Esto hace que los cambios de tipo sean automáticos si alguna vez recompila su código para un objetivo diferente.


También se trata de convenciones.

Un typedef a un int es incompatible con int int itself.

Ejemplo: pid_t es de tipo int, pero pasar un int crearía una advertencia.

¿Por qué? Porque quiere estar seguro de que si cruza los límites de la API, todos saben lo que espera el código.

Hay tipos flotante y doble, es decir, NSTimeInterval. No se trata realmente del tipo subyacente, sino de la convención a seguir.

Si declaras un int local como un contador de bucle y no planeas pasarlo a una API bien definida, puedes llamar a int an int.


NSInteger existe porque el tipo int varía en tamaño entre los sistemas de 32 bits y 64 bits. float y double no varían en tamaño de la misma manera, por lo que no es necesario tener tipos de envoltura para ellos.