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