Ziel C hat wie C keine Namespaces. Dies bedeutet , dass , wenn jemand bereits eine Funktion definiert foo
oder eine Klasse Bar
, muss es global eindeutig sein und man kann es nicht definieren. Dies kann zu vielen Kopfschmerzen führen, wenn Sie Ihren Code haben und dann eine weitere Bibliothek hinzufügen, und plötzlich brechen die Dinge an seltsamen Orten.
Es ist ein Leitfaden für den von Apple präsentierte in Programmierung mit Objective C: Konventionen Abschnitt der iOS Entwickler - Bibliothek:
Einige Namen müssen in Ihrer App eindeutig sein
Bei jedem Erstellen eines neuen Typs, Symbols oder Bezeichners sollten Sie zuerst den Bereich berücksichtigen, in dem der Name eindeutig sein muss. Manchmal kann dieser Bereich die gesamte Anwendung sein, einschließlich der verknüpften Frameworks. manchmal beschränkt sich der Geltungsbereich nur auf eine einschließende Klasse oder sogar nur auf einen Codeblock.
Klassennamen müssen in einer gesamten App eindeutig sein
Objective-C-Klassen müssen nicht nur innerhalb des Codes, den Sie in einem Projekt schreiben, eindeutig benannt werden, sondern auch innerhalb aller Frameworks oder Bundles, die Sie möglicherweise einschließen. Beispielsweise sollten Sie generische Klassennamen wie ViewController oder TextParser vermeiden, da ein Framework, das Sie in Ihre App aufnehmen, möglicherweise nicht den Konventionen entspricht und Klassen mit denselben Namen erstellt.
Um die Klassennamen eindeutig zu halten, werden Präfixe für alle Klassen verwendet. Sie haben bemerkt, dass Cocoa- und Cocoa Touch-Klassennamen normalerweise entweder mit NS oder UI beginnen. Solche Zwei-Buchstaben-Präfixe sind von Apple für die Verwendung in Framework-Klassen reserviert. Wenn Sie mehr über Cocoa und Cocoa Touch erfahren, werden Sie auf eine Vielzahl anderer Präfixe stoßen, die sich auf bestimmte Frameworks beziehen:
...
Ihre eigenen Klassen sollten drei Buchstabenpräfixe verwenden. Diese können sich auf eine Kombination aus Ihrem Firmennamen und Ihrem App-Namen oder sogar auf eine bestimmte Komponente in Ihrer App beziehen. Wenn Ihre Firma beispielsweise Whispering Oak heißt und Sie ein Spiel namens Zebra Surprise entwickeln, können Sie WZS oder WOZ als Klassenpräfix auswählen.
Diese Bibliotheken, von denen Sie erwähnen, dass sie diese Konvention brechen, befassen sich jedoch mit dem Problem des fehlenden Namensraums in Objective C.
Weiterführende
Literatur Namespacing von NSHipster
Was ist der beste Weg, um eine Objective-C-Namespace-Kollision zu lösen?
Wie verwendet man Namespaces in iOS Objective-C-Code?
;-)