O objetivo C, como C, não possui espaços para nome. Isso significa que se alguém já definiu uma função foo
ou classe Bar
, ela deve ser globalmente única e você não pode defini-la. Isso pode resultar em muitas dores de cabeça quando você tem seu código e depois adiciona outra biblioteca e, de repente, as coisas acontecem em lugares estranhos.
Não é uma diretriz apresentada pela Apple para este na programação com Objective C: Convenções seção da biblioteca desenvolvedor iOS:
Alguns nomes devem ser exclusivos em seu aplicativo
Cada vez que você cria um novo tipo, símbolo ou identificador, considere primeiro o escopo em que o nome deve ser exclusivo. Às vezes, esse escopo pode ser o aplicativo inteiro, incluindo suas estruturas vinculadas; Às vezes, o escopo é limitado apenas a uma classe anexa ou mesmo a um bloco de código.
Os nomes de classe devem ser exclusivos em todo o aplicativo
As classes Objective-C devem ser nomeadas exclusivamente, não apenas no código que você está escrevendo em um projeto, mas também em todas as estruturas ou pacotes configuráveis que você pode estar incluindo. Como exemplo, você deve evitar o uso de nomes genéricos de classe como ViewController ou TextParser, pois é possível que uma estrutura que você inclua no seu aplicativo não consiga seguir as convenções e criar classes com os mesmos nomes.
Para manter os nomes das classes exclusivos, a convenção é usar prefixos em todas as classes. Você notou que os nomes das classes Cocoa e Cocoa Touch geralmente começam com NS ou UI. Prefixos de duas letras como esses são reservados pela Apple para uso em classes de estrutura. À medida que aprende mais sobre o Cocoa e o Cocoa Touch, você encontrará vários outros prefixos relacionados a estruturas específicas:
...
Suas próprias classes devem usar três prefixos de letras. Isso pode estar relacionado a uma combinação do nome da sua empresa e do seu aplicativo, ou mesmo a um componente específico dentro do seu aplicativo. Como exemplo, se sua empresa se chamava Whispering Oak e você estava desenvolvendo um jogo chamado Zebra Surprise, você pode escolher WZS ou WOZ como prefixo de sua classe.
Portanto, as bibliotecas mencionadas por você quebram essa convenção, mas ficam no coração do problema da falta de espaço para nome no objetivo C.
Leitura adicional
Namespacing por NSHipster
Qual é a melhor maneira de resolver uma colisão de espaço para nome Objective-C?
Como se usa namespaces no código objetivo-c do iOS?
;-)