Tanto en OS X como en iOS, Apple usa el tipodef de CGFloat para obtener automáticamente un float
en sistemas de 32 bits y un double
en sistemas de 64 bits. Pero cuando usa las funciones matemáticas normales de Unix, debe tomar esa decisión caso por caso.CGFloat-based math functions?
Por ejemplo la función floor()
se define como:
double floor(double x);
y la función floorf()
se define como:
float floorf(float x);
Conozco todas iOS dispositivos son de 32 bits hoy, pero la razón para usar CGFloat es obtener una precisión mejorada automáticamente cuando el primer dispositivo de iOS de 64 bits se presentan (iPad 5?) y no tener que cambiar ningún código. Pero para que esto sea posible necesitamos funciones matemáticas basadas en CGFloat:
CGFloat Floor(CGFloat x);
¿Hay algún funciones como la de iOS o cualquier bibliotecas de terceros? ¿O cómo lo manejan otros desarrolladores? Sospecho que la mayoría está usando CGFloat
junto con las float
-versions en iOS pero luego "necesitarías" cambiar cada línea con una función matemática si compilas para un dispositivo iOS de 64 bits (y manejar dos versiones diferentes de tu base de código)
O simplemente podría usar float
en lugar de CGFloat
en todas partes y no preocuparse por iOS de 64 bits. Pero entonces tendrías inconsistencia con las bibliotecas de Apple y el código más feo de mi humilde opinión.
O quizás podría usar CGFloat
junto con las double
-versions y simplemente aprovechar el espacio y el rendimiento de permitir que el compilador se convierta entre el doble y flotar todo el tiempo. Y no le importan las posibles advertencias de "Conversión implícita a tipo de 32 bits".
O tal vez la mejor estrategia, apuesta en ninguna versión de 64 bits de iOS llegará algún día (o al menos en un futuro bastante cercano) y utilizar CGFloat
junto con float
-versions de las funciones matemáticas Unix y no preocuparse por la futuro.
¿Qué estrategia estás usando?
Gracias! Usar #include es exactamente lo que tenía en mente y también es una solución estándar (parte de C99). Aparentemente "tg" en significa Tipo Genérico. Debería ser señalado por Apple en los documentos si me preguntas. –