Objective-C Typedef
A linguagem de programação Objective-C fornece uma palavra-chave chamada typedef, que você pode usar para dar um novo nome a um tipo. A seguir está um exemplo para definir um termoBYTE para números de um byte -
typedef unsigned char BYTE;
Após esta definição de tipo, o identificador BYTE pode ser usado como uma abreviatura para o tipo unsigned char, for example:.
BYTE b1, b2;
Por convenção, letras maiúsculas são usadas para essas definições para lembrar ao usuário que o nome do tipo é realmente uma abreviatura simbólica, mas você pode usar letras minúsculas, como segue -
typedef unsigned char byte;
Você pode usar typedefpara dar um nome ao tipo de dados definido pelo usuário também. Por exemplo, você pode usar typedef com estrutura para definir um novo tipo de dados e, em seguida, usar esse tipo de dados para definir variáveis de estrutura diretamente como 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 o código acima é compilado e executado, ele produz o seguinte 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
o #define é uma diretiva Objective-C, que também é usada para definir os aliases para vários tipos de dados semelhantes a typedef mas com as seguintes diferenças -
o typedef está limitado a dar nomes simbólicos apenas a tipos, enquanto #define pode ser usado para definir alias para valores também, como você pode definir 1 como UM, etc.
o typedef a interpretação é realizada pelo compilador onde como #define as declarações são processadas pelo pré-processador.
A seguir está um uso mais simples 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;
}
Quando o código acima é compilado e executado, ele produz o seguinte 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