Поскольку Objective -C является надмножеством C, все операторы Objective -C, специфичные для C, преобразуются в операторы C во время компиляции файла.m (препроцессором, я думаю ). Так, например, выражение сообщения типа [receiver method]
преобразуется в вызов функции обмена сообщениями objc_msgSend(receiver, selector)
.
Мой вопрос :, есть ли у меня такое определение класса:
@interface ClassA {
int var1;
float var2;
id var3;
}
-(void) method1;
-(int) method2: (int) num1;
@end
@implementation ClassA
-(void) method1 {
// Implementation of the method
}
-(int) method2: (int) num1 {
// Implementation of the method
}
@end
во что он конвертируется компилятором (в версии 2.0 Objective -C )? Преобразуется ли он в вызовы таких функций, как objc_allocateClassPair()
, class_addIvar()
, class_addMethod()
и objc_registerClassPair()
, чтобы создать класс, добавить его переменные экземпляра, добавить его методы и зарегистрировать класс соответственно (. структура класса фактически определяется во время выполнения, а не загружается как структура из исполняемого файла )?