Objective-C Typedef

Il linguaggio di programmazione Objective-C fornisce una parola chiave chiamata typedef, che puoi utilizzare per assegnare un nuovo nome a un tipo. Di seguito è riportato un esempio per definire un termineBYTE per numeri di un byte -

typedef unsigned char BYTE;

Dopo questa definizione del tipo, l'identificatore BYTE può essere utilizzato come abbreviazione del tipo unsigned char, for example:.

BYTE  b1, b2;

Per convenzione, per queste definizioni vengono utilizzate lettere maiuscole per ricordare all'utente che il nome del tipo è in realtà un'abbreviazione simbolica, ma è possibile utilizzare le lettere minuscole, come segue:

typedef unsigned char byte;

Puoi usare typedefper dare un nome anche al tipo di dati definito dall'utente. Ad esempio, puoi utilizzare typedef con struttura per definire un nuovo tipo di dati e quindi utilizzare quel tipo di dati per definire le variabili di struttura direttamente come segue:

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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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

Il #define è una direttiva Objective-C, che viene anche utilizzata per definire gli alias per vari tipi di dati simili a typedef ma con le seguenti differenze -

  • Il typedef si limita a dare nomi simbolici ai tipi solo mentre #define può essere usato anche per definire l'alias per i valori, come puoi definire 1 come UNO, ecc.

  • Il typedef l'interpretazione viene eseguita dal compilatore dove as #define le dichiarazioni vengono elaborate dal preprocessore.

Di seguito è riportato un utilizzo più semplice di #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;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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