Учебники

Objective-C Typedef

Язык программирования Objective-C предоставляет ключевое слово typedef , которое можно использовать для присвоения типу нового имени. Ниже приведен пример определения термина BYTE для однобайтовых чисел:

typedef unsigned char BYTE;

После определения этого типа идентификатор BYTE можно использовать как сокращение для типа unsigned char, например:.

BYTE  b1, b2;

По соглашению, в этих определениях используются заглавные буквы, чтобы напомнить пользователю, что имя типа действительно является символическим сокращением, но вы можете использовать строчные буквы следующим образом:

typedef unsigned char byte;

Вы также можете использовать typedef для присвоения имени пользовательскому типу данных. Например, вы можете использовать typedef со структурой для определения нового типа данных, а затем использовать этот тип данных для непосредственного определения структурных переменных следующим образом:

Live Demo

#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 —

Live Demo

#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;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —