首页 > IOS > 类型定义--Objective-C教程系列之47

类型定义--Objective-C教程系列之47

来源:原创 作者:thomas 分类:IOS 阅读:936 日期:2015-03-15

Objective-C编程语言提供了一个关键字typedef,可以给某个类型一个新名字。如下示例:

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 = @"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; 
}


编译并执行如上代码,输出结果如下:

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与#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\n", TRUE); 
    NSLog( @"Value of FALSE : %d\n", 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


 

热门文章 更多>

微信扫一扫,关注技术十日谈