Custo do envio da mensagem no Objective-C

Estou curioso para saber sobre o custo do envio de mensagens no Objective-C em várias situações. Particularmente, quero orientar minha escolha de design de programa, para não me sentir tentado a otimizar prematuramente, evitando o envio de mensagens quando elas resultariam em um design melho

Um caso no meu projeto atual é que eu tenho uma classe com variáveis de instância: offsetX e offsetY. Muitas vezes, quero o deslocamento absoluto e, no momento, tenho essa linha de código em todo o lugar: -

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

Agora, se fosse C ++, eu criaria uma função embutida que retornaria o valor para absOffset. Mesmo em Java / C #, eu poderia definir uma função como final / selada e ter certeza de que seria incorporad

O objetivo-C seria: -

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

e eu chamaria assim: -

int ao = [self absOffset];

Agora, o compilador é capaz de incorporar isso? Suponho que seja capaz de, pelo menos, corrigi-lo em uma chamada de função direta e evitar o envio dinâmico de mensagens que (presumo) o objetivo-c deve usar por causa de seu tipo de sistem

Além disso, em geral, quanto custa o envio de mensagens no objetivo-C? Difere ao chamar um 'id' versus um ponteiro para uma classe concreta?

questionAnswers(4)

yourAnswerToTheQuestion