ObjC: Может ли большое количество обращений к супер-методу, который никогда не вызывает медлительности? - PullRequest
0 голосов
/ 25 февраля 2010

Например, в Cocoa Framework большинство методов касаний ничего не делают, если вы их не реализуете. Если во всех похожих методах в моей программе я вызову [super method:] до своей пользовательской реализации, это когда-нибудь вызовет реалистичное замедление (сотых долей секунды)?

Может быть, глупый вопрос ... Но я спрашиваю, поскольку не знаю низкоуровневую специфику того, сколько стоит сообщение.

1 Ответ

2 голосов
/ 25 февраля 2010

Краткий ответ: нет.

Длинный ответ: сообщения выполняются невероятно быстро во время выполнения Obj-C. Компилятор оптимизирует вызовы, среда выполнения оптимизирует диспетчеризацию. Если вы вызываете сообщения в виде замкнутых циклов, миллионы раз фрейма для построения графической геометрии, то вы должны учитывать влияние. В противном случае, нет, особенно для таких вещей, как вызов super при вводе данных пользователем, что по определению на порядки меньше, чем в других бухгалтериях системы.

Упражнение для интересующихся: профилируйте свое приложение с помощью Shark и проверьте его на предмет пинков. Диспетчер сообщений называется что-то вроде objc_msgSend.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...