Язык программирования 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 = @"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 также может использоваться для определения псевдонима для значений, например, вы можете определить 1 как ONE и т. Д.
-
Интерпретация typedef выполняется компилятором, где операторы #define обрабатываются препроцессором.
Функция typedef ограничена предоставлением символических имен только для типов, тогда как #define также может использоваться для определения псевдонима для значений, например, вы можете определить 1 как ONE и т. Д.
Интерпретация 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; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —