Ponieważ Objective-C jest zestawem nadrzędnym C, wszystkie instrukcje specyficzne dla Objective-C są konwertowane na instrukcje C podczas kompilowania pliku .m (przez preprocesor, jak sądzę). Na przykład wyrażenie komunikatu, takie jak [receiver method]
, jest konwertowane na wywołanie funkcji wiadomości objc_msgSend(receiver, selector)
.Co to jest interfejs klasy Objective-C 2.0 i implementacja przekonwertowana przez GCC lub Clang
Moje pytanie brzmi: czy mam definicję klasy tak:
@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
co to jest przekształcony przez kompilator (w wersji 2.0, Objective-C)? Czy jest konwertowane na wywołania funkcji takich jak objc_allocateClassPair()
, class_addIvar()
, i objc_registerClassPair()
, aby utworzyć klasę, dodać jej zmienne instancji, dodać swoje metody i odpowiednio zarejestrować klasę (Tak, aby struktura klas była faktycznie zdefiniowana w środowisku wykonawczym zamiast jest ładowany jako struct z pliku wykonywalnego)?