¿Por qué Objective-C no tiene espacios de nombres? Parece una característica simple que haría que algunos nombres de clase sean más legibles (AVMutableVideoCompositionLayerInstruction
¿alguien?) Y ax los prefijos de letra tontos en nombres de clase. ¿Esto se debe principalmente a la compatibilidad con versiones anteriores? ¿Es más difícil implementar espacios de nombres de lo que parece?¿Por qué Objective-C no tiene espacios de nombres?
Respuesta
No sé la respuesta, pero sospecho que "es más difícil de lo que parece", probablemente. Debería introducir soporte en el compilador y el enlazador de una manera que no rompa el software existente. Y aunque esto es obviamente posible (C++ ya lo ha hecho), presumiblemente el equipo de la cadena de herramientas ha tenido prioridades más altas en su plato. p.ej. en el pasado reciente hemos tenido recolección de basura, GCD, bloques y Objective-C 2.0 aparecen por lo que no podemos decir que no han estado haciendo nada.
El soporte del espacio de nombres es lo que me encantaría ver introducido en Objective-C.
Pensé en ello también, creo que el obstáculo más grande puede ser todo lo de C ... –
No sé si quiere saber si hay alguna decisión oficial. Pero el espacio de nombres como muchas otras características son opciones, elección realizada por el colaborador del idioma. PHP recientemente introdujo Namespace, y por ejemplo el paquete de uso de Java que actúa como espacio de nombres o módulos de uso de Python.
Creo que hay una sobrecarga en la implementación del espacio de nombres, principalmente porque Objective-c está tipado dinámicamente, por lo que en tiempo de ejecución debe verificar el espacio de nombres, resolver el comportamiento predeterminado, etc. y supongo que porque Objective-c también se usa en entornos incrustados (AKA iPhone), la velocidad es muy importante.
Tienes que envolver todo lo que he dicho a lo grande en mi humilde opinión; D
Actualización:
Me pareció muy interesante la discusión http://clang-developers.42468.n3.nabble.com/Adding-namespaces-to-Objective-C-td1870848.html#a1872744 en el sitio web de desarrolladores sonido metálico que explica la razón por la cual es, sin duda no trivial para implementar el espacio de nombres en Obj-C.
Sería suficiente, creo, para proporcionar soporte de espacio de nombres para nombres de clase. Estos serían mutilados de alguna manera para que, en tiempo de ejecución, hubiera poco o ningún gasto. – JeremyP
- 1. ¿Por qué múltiples espacios de nombres?
- 2. ¿Por qué hay espacios de nombres XAML que son URLS?
- 3. ¿Por qué hay URL en espacios de nombres XML?
- 4. ¿Tiene IntelliJ el asistente de espacios de nombres Spring?
- 5. ¿Por qué PreviewTextInput no maneja espacios?
- 6. ¿Por qué las especializaciones de plantillas no están permitidas en diferentes espacios de nombres?
- 7. ¿Espacios de nombres en Redis?
- 8. ¿Qué es lo más parecido que MATLAB tiene a los espacios de nombres?
- 9. ¿Para qué sirve el parámetro de espacios de nombres MapRoute?
- 10. clases Adelante declaran en espacios de nombres
- 11. ¿Por qué Java no tiene constantes para nombres de propiedades de sistemas bien conocidos?
- 12. ¿por qué jvm tiene muchos clasloaders? ¿por qué no uno?
- 13. StAX y espacios de nombres
- 14. espacios de nombres XElement (¿Cómo?)
- 15. ¿Squeak admite espacios de nombres?
- 16. Animaciones de espacios de nombres
- 17. Espacios de nombres en JSON
- 18. ¿Por qué boost no tiene un make_scoped()?
- 19. ¿Por qué Python no tiene variables estáticas?
- 20. ¿Por qué SerializationInfo no tiene métodos TryGetValue?
- 21. ¿Por qué C no tiene paquete privado?
- 22. ¿Por qué ActionScript no tiene "genéricos"?
- 23. estilo y espacios de nombres
- 24. ¿Qué espacios de nombres de símbolos hay en Haskell?
- 25. ¿Para qué son los espacios de nombres XML?
- 26. Espacios de nombres en Delphi
- 27. ¿HTML5 admite espacios de nombres?
- 28. herencia y espacios de nombres
- 29. ¿Analizar espacios de nombres XML?
- 30. espacios de nombres RDF (datos semánticos)
Por lo que vale, no preferiría NeXTSTEP :: Array over NSArray. Por estúpido que sea el prefijo, creo que el hecho de que los nombres no contengan ningún símbolo se ajusta muy bien a la estructura oracional de la sintaxis de Objective-C. –
@wm: Pero lo leería como "matriz Nextstep" no como "matriz de colon colon Nextstep" de la misma manera que lee 'objectAtIndex: i' como" objeto en el índice i "no" objeto en índice coli i " . El punto es discutible en lo que respecta a las clases NS de todos modos. No puede moverlos a un nuevo espacio de nombres sin romper todo el software Cocoa existente. – JeremyP
Además, no lo haría referenciando como 'Nextstep :: Array' cada vez, tendría un' using Nextstep; 'y luego simplemente lo haría referencia como' Array', * a menos que * haya una ambigüedad y luego usted ' d resolverlo completamente Realmente haría el código más limpio y más legible. – devios1