Objective-C Typedef

Le langage de programmation Objective-C fournit un mot-clé appelé typedef, que vous pouvez utiliser pour donner un nouveau nom à un type. Voici un exemple pour définir un termeBYTE pour les nombres à un octet -

typedef unsigned char BYTE;

Après cette définition de type, l'identifiant BYTE peut être utilisé comme abréviation pour le type unsigned char, for example:.

BYTE  b1, b2;

Par convention, des lettres majuscules sont utilisées pour ces définitions pour rappeler à l'utilisateur que le nom du type est en réalité une abréviation symbolique, mais vous pouvez utiliser des minuscules, comme suit -

typedef unsigned char byte;

Vous pouvez utiliser typedefpour donner également un nom au type de données défini par l'utilisateur. Par exemple, vous pouvez utiliser typedef avec structure pour définir un nouveau type de données, puis utiliser ce type de données pour définir directement les variables de structure comme suit -

#import <Foundation/Foundation.h>

typedef struct Books {
   NSString *title;
   NSString *author;
   NSString *subject;
   int book_id;
} Book;
 
int main() {
   Book book;
   book.title = @"Objective-C Programming";
   book.author = @"TutorialsPoint";
   book.subject = @"Programming tutorial";
   book.book_id = 100;
   
   NSLog( @"Book title : %@\n", book.title);
   NSLog( @"Book author : %@\n", book.author);
   NSLog( @"Book subject : %@\n", book.subject);
   NSLog( @"Book Id : %d\n", book.book_id);

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

2013-09-12 12:21:53.745 demo[31183] Book title : Objective-C Programming
2013-09-12 12:21:53.745 demo[31183] Book author : TutorialsPoint
2013-09-12 12:21:53.745 demo[31183] Book subject : Programming tutorial
2013-09-12 12:21:53.745 demo[31183] Book Id : 100

typedef vs #define

le #define est une directive Objective-C, qui est également utilisée pour définir les alias pour divers types de données similaires à typedef mais avec les différences suivantes -

  • le typedef se limite à donner des noms symboliques aux types uniquement alors que #define peut également être utilisé pour définir un alias pour les valeurs, comme vous pouvez définir 1 comme ONE, etc.

  • le typedef l'interprétation est effectuée par le compilateur où comme #define les instructions sont traitées par le pré-processeur.

Voici une utilisation la plus simple de #define -

#import <Foundation/Foundation.h>
 
#define TRUE  1
#define FALSE 0
 
int main( ) {
   NSLog( @"Value of TRUE : %d\n", TRUE);
   NSLog( @"Value of FALSE : %d\n", FALSE);

   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

2013-09-12 12:23:37.993 demo[5160] Value of TRUE : 1
2013-09-12 12:23:37.994 demo[5160] Value of FALSE : 0