El objetivo C, como C, no tiene espacios de nombres. Esto significa que si alguien ya ha definido una función foo
o una clase Bar
, debe ser globalmente única y no puede definirla. Esto puede generar muchos dolores de cabeza cuando tiene su código y luego agrega otra biblioteca y de repente las cosas se rompen en lugares extraños.
No es una pauta presentada por Apple para esto en Programación con C Objetivo: Convenios sección de la biblioteca desarrollador iOS:
Algunos nombres deben ser únicos en su aplicación
Cada vez que crea un nuevo tipo, símbolo o identificador, primero debe considerar el alcance en el que el nombre debe ser único. A veces, este alcance puede ser la aplicación completa, incluidos sus marcos vinculados; a veces, el alcance se limita solo a una clase adjunta o incluso a un bloque de código.
Los nombres de clase deben ser únicos en toda una aplicación
Las clases de Objective-C deben nombrarse de manera única no solo dentro del código que está escribiendo en un proyecto, sino también en cualquier marco o paquete que pueda incluir. Como ejemplo, debe evitar el uso de nombres de clase genéricos como ViewController o TextParser porque es posible que un marco que incluya en su aplicación no cumpla con las convenciones y cree clases con los mismos nombres.
Para mantener los nombres de clase únicos, la convención es usar prefijos en todas las clases. Habrás notado que los nombres de clase Cocoa y Cocoa Touch generalmente comienzan con NS o UI. Los prefijos de dos letras como estos están reservados por Apple para su uso en clases marco. A medida que aprenda más sobre Cocoa y Cocoa Touch, encontrará una variedad de otros prefijos que se relacionan con marcos específicos:
...
Sus propias clases deberían usar prefijos de tres letras. Estos pueden relacionarse con una combinación del nombre de su empresa y el nombre de su aplicación, o incluso un componente específico dentro de su aplicación. Como ejemplo, si su empresa se llamara Whispering Oak, y estaba desarrollando un juego llamado Zebra Surprise, podría elegir WZS o WOZ como prefijo de clase.
Por lo tanto, las bibliotecas que usted menciona rompen esta convención, pero llegan al corazón del problema de la falta de espacios de nombres dentro del Objetivo C.
Lectura adicional
Espaciado de nombres por NSHipster
¿Cuál es la mejor manera de resolver una colisión de espacio de nombres de Objective-C?
¿Cómo se usan los espacios de nombres en el código de Objective-C de iOS?
;-)