Виртуальные функции в Objective C

Как объявить виртуальные функции в Objective C.

virtual void A(int s);

Как объявить то же самое в Objective C.

-(void)A:(int)s //normal declaration

Ответы

Ответ 1

Objective-c не поддерживает виртуальные функции или сказать, что другой способ - все функции в классах obj-c являются виртуальными, поскольку вызовы методов определяются во время выполнения.

Если ваш подкласс переопределяет метод из суперкласса и вы ссылаетесь на экземпляр подкласса, используя указатель на суперкласс, тогда метод подкласса будет вызван:

@interface A{
}
-(void) someMethod;
@end

@interface B : A{
}
-(void) someMethod;
@end

...
A* obj = [[B alloc] init];
[obj someMethod]; // method implementation from B will be called