Más en In Cocoa do you prefer NSInteger or just regular int, and why?, se mencionó NSDouble
y NSFloat
, pero no puedo ver una referencia para los que figuran en la documentación. Si el propósito de NSInteger
es para la seguridad arquitectónica, ¿qué pasa con otros tipos como double
o float
?¿Existen NSDouble, NSFloat u otros tipos distintos de NSInteger?
Respuesta
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.
Entonces, ¿qué hacer si quiero agregar un doble a un NSArray? Solo acepta objetos –
Envuélvalo en un objeto NSNumber (que es una subclase del NSValue más general). – duskwuff
Bueno, hay 'CGFloat', que es un' typedef' para 'float' en 32bit y para' double' en 64bit. Lo cual es bastante equivalente a lo que se ha hecho con 'NS (U) Integer', diría yo. – Regexident
No hay NSFloat
pero sé que el API de núcleo de gráficos con el tiempo cambió de float
a CGFloat
de modo que pudiera utilizar un double
en algunas arquitecturas.
Lo mejor es usar los tipos exactos que declaran los encabezados 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 no es compatible con int int.
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 declara un int local como contador de bucles y no planea pasarlo a una API bien definida, puede llamar a int an int.
- 1. tipos NSInteger
- 2. WebBrowser.DrawToBitmap() u otros métodos?
- 3. Cómo capturar cancallation de UIScrollView u otros?
- 4. ¿Sabe si los campos/propiedades de un objeto son tipos "simples/primitivos" u otros objetos?
- 5. libros Android NDK u otros materiales
- 6. qué es mejor php, JSP u otros
- 7. ¿Diseccionar una matriz de bytes en distintos tipos de datos?
- 8. Java - formato de fecha con meses de Turquía u otros
- 9. ¿Por qué son distintos los tipos de cadenas y vectores?
- 10. ¿Módulos abstractos de estilo Scala en C# u otros idiomas?
- 11. int vs NSNumber vs NSInteger
- 12. Pruebas automáticas en RPG (u otros lenguajes ILE)
- 13. ¿Cuántos usuarios tienen instalado Flash, Java, Unity u otros complementos?
- 14. Enthought Python, Sage u otros (en clústeres Unix)
- 15. hay una API para GIT (C++ u otros idiomas)
- 16. TinyMCE u otros editores WYSIWYG para dispositivos móviles?
- 17. Imprimir PDF existente (u otros archivos) en C#
- 18. ¿Por qué tenemos punteros distintos de vacío?
- 19. emulando por completo los distintos tipos integrados (específicamente: char16_t y char32_t)
- 20. Comparar NSNumber con NSInteger
- 21. Convertir NSInteger a NSIndexpath
- 22. NSInteger cuenta por 4?
- 23. ¿Cómo comparar dos NSInteger?
- 24. ¿Convertir NSInteger a NSUInteger?
- 25. Añadir NSInteger a NSMutableData
- 26. ¿Convierte NSString a NSInteger?
- 27. conversión de NSNumber a NSInteger
- 28. ¿Hay otros lenguajes distintos de Objective-J que se "compilan" a JavaScript en el navegador?
- 29. ¿Puedo usar otros IDEs distintos de Visual Studio para la codificación en .net?
- 30. Dónde aplicar Comportamiento (y otros tipos) en FRP
No estoy seguro de qué está hablando OP. Esos no existen. – BoltClock
¿Entonces el doble y el flotador son arquitectónicos seguros? Puedo usar double, pero cuando se trata de int necesito usar NSInteger, ¿así? – sarunw
No creo que * NSFloat *, * NSDouble * existan. Pero, sé que existe CGFloat (Fuera del contexto de la pregunta. ¿Eh?) – EmptyStack