Pas toujours mais la plupart du temps, vous trouverez des projets open source iOS ou Mac OS X avec des noms commençant par les lettres initiales du prénom et du nom de l'auteur. Si un projet devait être écrit par Nick Leblanc, le projet serait lu comme NLMyProject
.
Exemples:
- RMSwipeTableViewCell par Rune Madsen,
- EBCardCollectionViewLayout par Ezequiel Becerra,
- SDiPhoneVersion par Sebastian Dobrincu,
- LNNotificationsUI par Leo Natan.
D'où cela vient-il? Une personne l'a-t-elle écrit de cette façon d'abord, puis tous les autres ont suivi?
Je n'ai rien trouvé à ce sujet, même dans les directives Apple . Cet idiome est-il écrit quelque part?
ios
objective-c
apple
conventions
namespace
Stéphane Bruckert
la source
la source
;-)
Réponses:
L'objectif C, comme C, n'a pas d'espaces de noms. Cela signifie que si quelqu'un a déjà défini une fonction
foo
ou une classeBar
, celle-ci doit être globalement unique et vous ne pouvez pas la définir. Cela peut entraîner beaucoup de maux de tête lorsque vous avez votre code, puis ajoutez une autre bibliothèque et soudain, les choses se brisent dans des endroits étranges.Il existe une directive présentée par Apple pour cela dans la section Programmation avec Objective C: Conventions de la bibliothèque de développeur iOS:
Donc, les bibliothèques que vous mentionnez enfreignent en quelque sorte cette convention, mais sont au cœur du problème du manque d'espaces de noms au sein de l'objectif C.
Autres lectures d'
espaces de noms par NSHipster
Quelle est la meilleure façon de résoudre une collision d'espace de noms Objective-C?
Comment utilise-t-on les espaces de noms dans le code objective-c iOS?
la source
@
est utilisé parce qu'il n'est pas utilisé en C ... essayer d'ajouter un autre opérateur qui ne casse pas d'autres choses est difficile.