Objective-C Typedef

El lenguaje de programación Objective-C proporciona una palabra clave llamada typedef, que puede utilizar para asignar un nuevo nombre a un tipo. A continuación se muestra un ejemplo para definir un términoBYTE para números de un byte -

typedef unsigned char BYTE;

Después de esta definición de tipo, el identificador BYTE se puede utilizar como abreviatura del tipo unsigned char, for example:.

BYTE  b1, b2;

Por convención, las letras mayúsculas se utilizan para estas definiciones para recordarle al usuario que el nombre del tipo es realmente una abreviatura simbólica, pero puede utilizar minúsculas, de la siguiente manera:

typedef unsigned char byte;

Puedes usar typedefpara dar un nombre al tipo de datos definido por el usuario también. Por ejemplo, puede usar typedef con estructura para definir un nuevo tipo de datos y luego usar ese tipo de datos para definir variables de estructura directamente de la siguiente manera:

#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;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

los #define es una directiva Objective-C, que también se usa para definir los alias para varios tipos de datos similares a typedef pero con las siguientes diferencias:

  • los typedef se limita a dar nombres simbólicos a tipos solo mientras que #define también se puede usar para definir alias para valores, como si se pudiera definir 1 como UNO, etc.

  • los typedef La interpretación es realizada por el compilador donde como #define Las declaraciones son procesadas por el preprocesador.

A continuación se muestra un uso más 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;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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