Objective-C typedef
Objective-C编程语言提供 typedef 关键字,可以用一个新的名字给一个类型。下面是一个例子定义一个术语 BYTE 一个字节的数字:
typedef unsigned char BYTE;
这种类型的定义后,可以用作标识符BYTE的缩写unsigned char 类型的,例如:
BYTE b1, b2;
按照惯例,大写字母是用于这些定义提醒用户的类型名称确实是一个符号缩写,但可以用小写,如下:
typedef unsigned char byte;
可以使用typedef 用户定义的数据类型以及赋予一个名字。例如,可以使用与结构 typedef 定义一个新的数据类型,然后使用这些数据类型直接定义结构变量如下:
#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 = @"TutorialsYiibai"; book.subject = @"Programming tutorial"; book.book_id = 100; NSLog( @"Book title : %@ ", book.title); NSLog( @"Book author : %@ ", book.author); NSLog( @"Book subject : %@ ", book.subject); NSLog( @"Book Id : %d ", book.book_id); return 0; }
上面的代码编译和执行时,它会产生以下结果:
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 : TutorialsYiibai 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 和 #define
#define是一个Objective-C 的指令,它也被用来定义别名为各种数据类型类似 typedef,但有以下差异:
-
typedef类型和#define 可以被用来定义别名值以及符号名,一样可以定义 ONE 为 1,等等。
-
typedef的解释是由编译器在#define语句预处理器处理。
下面是 #define一个最简单的用法:
#import <Foundation/Foundation.h> #define TRUE 1 #define FALSE 0 int main( ) { NSLog( @"Value of TRUE : %d ", TRUE); NSLog( @"Value of FALSE : %d ", FALSE); return 0; }
上面的代码编译和执行时,它会产生以下结果:
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