Стоимость отправки сообщения в Objective-C

Мне любопытно узнать о стоимости отправки сообщений в Objective-C в различных ситуациях. В частности, я хочу руководствоваться своим выбором дизайна программы, чтобы не испытывать соблазна преждевременной оптимизации, избегая отправки сообщений, когда они улучшат дизайн.

Случай в моем текущем проекте состоит в том, что у меня есть класс с переменными экземпляра: offsetX и offsetY. Я часто хочу абсолютное смещение, и на данный момент у меня есть эта строка кода повсюду: -

int absOffset = ((offsetX < 0.0) ? -offsetX : offsetX) + 
                 ((offsetY < 0.0) ? -offsetY : offsetY);

Теперь, если бы это был C ++, я бы создал встроенную функцию, которая бы возвращала значение для absOffset. Даже в Java / C # я мог определить такую функцию как final / sealed и быть уверен, что она будет встроенной.

Цель-C будет:

-(int)absOffset {
    return ((offsetX < 0.0) ? -offsetX : offsetX) + 
            ((offsetY < 0.0) ? -offsetY : offsetY);
}

и я бы назвал это так:

int ao = [self absOffset];

Теперь компилятор может это встроить? Я предполагаю, что он способен по крайней мере исправить это для прямого вызова функции и избежать динамической отправки сообщений, которую (я предполагаю) должен использовать target-c из-за своей системы типов.

Кроме того, в общем, сколько стоит отправка сообщений в target-C? Отличается ли он при вызове через id от указателя на конкретный класс?

Ответы на вопрос(2)

Ваш ответ на вопрос