All streams
Search
Write a publication
Pull to refresh

Comments 6

На самый главный вопрос-то не ответили.

Насколько различается самый медленный тип диспетчеризация от самого быстрого? В каких случаях имеет смысл учитывать скорость?

Разница во времени между static и message dispatch может быть кратной, зависит от конкретных условий. Я посчитал важным показать принципиальную разницу между видами и то, почему это влияет на скорость поиска реализации.

Кратной. Но в абсолютных цифрах-то это сколько? наносекунды? десятки наносекунд? сотни? Джуны это читают и потом на собесах категорично заявляют, что динамическую диспетчеризацию нельзя использовать ни в коем случае, потому что она "медленная" ^.^

Такой вывод, конечно же, неверный, и он не следует из статьи, есть случаи, в которых message dispatch незаменим, например, если мы хотим добавить логирование в различные классы, не трогая их самих. Отвечая на ваш вопрос, время на поиск реализации занимает единицы наносекунд и отличается на единицы наносекунд от вида к виду

Если не адрес не найден, то поиск продолжается у родительского класса, и так далее до NSObject.

Ошибка. После этого еще "объекту дается последний шанс обработать сообщение перед вызовом исключения — селектор сообщения вместе с параметрами «заворачивается» в специальный объект типа NSInvocation и объекту посылается сообщение forwardInvocation:, где в качестве параметра выступает объект класса NSInvocation. "


И в предпоследней таблице ерунда - унаследованное от NSObject должно всегда использовать message dispatch, а у вас оно только для extension

Sign up to leave a comment.

Articles