doc sur NSInteger et les autres

Philippe49Philippe49 Membre
21:01 modifié dans API AppKit #1
On voit apparaà®tre des NSInteger, NSUInteger, CGFloat, ....

Je suis sur la doc 'The objective-C 2.0 Programming Language" et nil comme info ?

Réponses

  • psychoh13psychoh13 Mothership Developer Membre
    21:01 modifié #2
    Ces nouveaux types permettent une meilleure compatibilité des nouvelles applications selon l'architecture du processeur.
    Maintenant, tu ne peux plus compiler pour PPC ou Intel, c'est systématiquement du code UB, tu peux en revanche choisir si tu compiles pour un 32 bits ou pour un 64 bits.
    Ces types NSInteger, NSUInteger, CGFloat, etc. permettent de s'assurer que les nombres seront à  la bonne taille selon l'architecture.
    Par exemple, en 32 bits, un CGFloat correspond à  un simple float, en 64 bits celui-ci correspond à  un double. De même dans le cas des NSInteger et NSUInteger.
  • Philippe49Philippe49 Membre
    21:01 modifié #3
    Du genre typedef conditionné à  la précompilation

    Il y a d'autres types de ce .. type ?
  • psychoh13psychoh13 Mothership Developer Membre
    21:01 modifié #4
    dans 1193908698:

    Du genre typedef conditionné à  la précompilation


    Exactement.

    dans 1193908698:
    Il y a d'autres types de ce .. type ?


    À priori non, en tout cas, en tant que simple définition de type de base selon les variables de précompilations, il n'y a que ça. Après tout c'est l'essentiel. Qu'est-ce qu'on a comme type finalement ? Caractères, Entiers et Flottants. Les caractères sont définis depuis la nuit des temps par char, unichar ou wchar_t. Et pour les entiers et flottants on a une uniformisation grâce à  Leopard avec NSUInteger NSInteger et CGFloat.

    L'uniformisation se fait aussi avec les types complexes. Du genre, au lieu d'avoir un type CGRect et un NSRect, maintenant l'un est définit par rapport à  l'autre, mais ça ce n'est valable que si tu compiles pour Leopard uniquement.

    Donc grosso-modo on a :

    NSRect = CGRect, NSSize = CGSize, NSPoint = CGPoint, et donc ces types sont interchangeables, ce qui est un grand soulagement, mais uniquement sous Leopard.
Connectez-vous ou Inscrivez-vous pour répondre.