Quelle est la raison de donner Souligné dans les fichiers d'en-tête privés de pomme

StackOverflow https://stackoverflow.com/questions/1829755

  •  11-09-2019
  •  | 
  •  

Question

Je l'ai vu beaucoup .h (Private API de) de la pomme. La plupart des variables / structures / énumérations / classes ont _ comme préfixe.

#import <Foundation/NSValue.h>
#import <Foundation/NSObjCRuntime.h>

@class NSString;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

Ma question est,

Quelle est la raison derrière donner et typedef les souligner à nouveau avec une bonne?

Était-ce utile?

La solution

Objective-C dispose d'un espace de nom dans le monde ouvert. Il est important que tous les noms soient uniques. En plus des raisons évoquées précédemment, Apple se réserve tous les noms pour lui-même Souligner. Cela aidera à prévenir les collisions accidentelles nom.

Autres conseils

Il est généralement utilisé comme un drapeau que l'entité en question est privée et / ou interne et ne doit pas être utilisé dans votre code directement. Je pense que dans les anciennes versions de C vous ne pouvez déclarer une struct anonyme et donc vous besoin d'un nom « de remplissage » pour y mettre.

Je crois que ce afin de créer un de type opaque. Cela limite les clients du type d'accès à des détails internes sans utiliser l'interface fournie. Vous pouvez ensuite utiliser le struct par un opaque , et peut déclarer des tableaux, variables, etc de le type sans se soucier de la mise en œuvre interne afin d'assurer que le logiciel ne sera pas besoin d'être recompilé si Apple décide de changer le code derrière ces types.

Pour déclarer les structures, le style de déclarer typedef struct _name {...} name remonte aux jours de 2.0 GCC ou si, lorsque, comme cela a été mentionné ci-dessus, on ne peut pas avoir un struct anonyme.

Pour les noms de Ivars, le trait de soulignement de leader unique est une convention de codage interne d'Apple, et Apple parlant officiellement réserve tous les noms qui commencent par un seul underscores. Si les noms d'Apple pendant toute leur Ivars que de façon, vous ne serez pas entrer en collision avec l'un de leurs noms si vous ne le faites pas.

Malheureusement, de nombreux projets de code de l'échantillon ont été publiés sur le site web du développeur d'Apple sans passer par le code et en supprimant les traits de soulignement sur les noms de Ivar. Cela se produit pour deux raisons, la principale étant que les développeurs travaillant à l'intérieur d'Apple ont l'habitude de nommer leurs variables de cette façon, et l'autre raison est que les gens examinent les projets de code exemple ne sont pas vraiment pris soin beaucoup sur l'application d'un codage norme style.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top