2012-03-21 4 views
3

Я думаю об обертывании часто используемых селекторов объектов Cocoa с моим собственным кодом, чтобы улучшить скорость ввода. Типичный пример может быть что-то вроде аккуратного белого селектора пространства: -ObjectiveC Категория и скорость в исполнении и вводе

[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

Моих вариантов: -

(1) завернуть в категории NSString как так

- (NSString *)Trim 
{ 
    return [self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 

(2) определите его как макрос, а не так

Я бы предпочел вариант (1) выше, но есть ли какие-либо показатели e хитов?

+0

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

ответ

3

Крайне маловероятно, что категория будет иметь значительную или даже заметную разницу в производительности.

Метод категории требует дополнительной отправки сообщений, поэтому да, это будет медленнее, чем макрос. Но диспетчер сообщений ObjC является одним из самых оптимизированных битов кода во всей ОС - он отнюдь не медленный.

Однако, если вы используете макрос несколько раз, размер вашего кода будет увеличиваться больше, чем у него будет с категорией, которая может иметь худшие побочные эффекты. (Но это не очень много кода, поэтому для реальных изменений это потребует много примеров.)

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

Смежные вопросы